VBA实战技巧08: 鼠标悬停在超链接公式上时运行自定义函数

本文介绍的技巧来自于myspreadsheetlab.com,这个技巧很有趣,当鼠标悬停在超链接公式上时会运行使用VBA自定义的函数,如下图1所示。

图1
如上图1所示,单元格K9中是一个超链接公式:
=IFERROR(HYPERLINK(RolloverSquare(K100),K100+1),K100+1)
其中,RolloverSquare是一个自定义函数:
Public Function RolloverSquare(XIndex As Integer)
If XIndex <> Range("XIndex").Value + 1 Then Range("XIndex").Value = XIndex + 1
End Function
在这个自定义函数中:
Range("XIndex").Value
引用名为“XIndex”的单元格中的值。这个名称为“XIndex”的单元格就是单元格K98。
因此,当我们将鼠标悬停在公式单元格K9上时,会将单元格K100中的值传递给RolloverSquare函数。在函数中,将该值与单元格K98中的值加上1的结果比较,如果两者不相等,则将K98中的值修改为K100中的值加1。
简单地说,就是当鼠标悬停在公式单元格K9上时,会比较单元格K98和K100中的值,如果K100中的值不等于K98+1,则单元格K98=K100+1。
其中间运行过程信息如下图2所示。

图2
下面将此公式应用到更多的单元格,其效果如下图3所示。

图3
可以利用这项技术创建一个小有意思的游戏,如下图4所示。单击右下角开始,当沿着白色区域到达左上角“胜利”按钮并单击,游戏获胜,右下方会显示游戏开始时间、结束时间和使用时间,并显示游戏结束。当单击开始后,碰到蓝色区域,则游戏结束。

图4
蓝色区域中使用了我们在上文中的超链接公式。