【发布时间】:2018-07-19 20:20:02
【问题描述】:
我的 excel 文档中有两个超链接。
在 Sheet1 的单元格 A1 中,我写了公式 =HYPERLINK("#'Sheet1'!A1","click")。
在 Sheet1 的单元格 A2 中,我做了我认为相同的操作,但使用了交互式 GUI。右键单击单元格 A2 => 超链接 => 放入此文档 =>(键入单元格引用)A2。
我还写了一个很短的子,当我点击这些超链接时,我会看到一个消息框。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
MsgBox ActiveCell
End Sub
我已将此宏放在 Sheet1 中。
当我单击单元格 A2 时,我得到一个 MsgBox,其中包含单元格值。正如预期的那样
但是,当我单击单元格 A1 时,没有任何反应。
为什么这两个链接的行为不同?如何使单元格 A1 的行为方式与单元格 A2 相同,同时仍在单元格中使用公式?
那为什么?
我有一个生成 CSV 文件的程序。为简单起见,结构看起来有点像这样。
f1,f2,compare
f3,f2,compare
这意味着很容易覆盖格式。
然后我打开这个文件并将其保存为.xlsm。我想要的是当点击比较时它会运行一个宏。这可以是按钮或超链接或其他任何形式,只要它显然是可点击的。
因此我选择=HYPERLINK("#'Sheet1'!A1","click") 的方法,因为它很容易在列之后增加数字,并且仍然显示它是明显可点击的东西。
因此,以以下格式获取 CSV 文件输出将是一个快速的更改
f1,f2,"=HYPERLINK(""#'Sheet1'!C1"",""compare"")"
f3,f2,"=HYPERLINK(""#'Sheet1'!C2"",""compare"")"
这样做的目标是尽可能自动化,因为此工作簿可能有超过一千行,因此我无法手动整理每一行上的比较按钮
更新 2
单击比较按钮时,将运行一个宏。这个宏被称为CompareFiles。它从同一行但在 a 和 b 列中的单元格中获取值,将它们传递给 shell 命令,然后打开一个用于比较文件的不同程序。
【问题讨论】:
-
遗憾的是,只有 Inserted 超链接可以引发事件; 公式超链接不能。
-
为什么是
#?这也是一个循环引用。您要链接到什么? -
@Dan 所以你的目标是利用超链接的事件?跟随它的是什么?也许可以使用其他一些事件?或者,假设您无法避免使用插入的链接,您可以循环插入吗?
-
同意@MrDogme - 您对超链接的最终目标是什么?我觉得这可能是XY Problem
-
所以当我单击单元格
C3时,您想要运行宏吗?宏叫什么? this thread 有帮助吗?还是this page?