我怎样才能防止自定义Excel超链接触发与拖动填充句柄 – 我只希望它响应点击

好,所以我有一个电子表格单元格中的超链接函数:

=HYPERLINK(JJmp(I1030), I1030) 

使用JJmp()函数:

 Function JJmp(x) As String dim iint as variant iint = x If IsNull(iint) Then GoTo out: If Left(iint, 1) <> "_" Then GoTo out: pat1 = """C:\Program Files (x86)\Adobe\Acrobat 10.0\Acrobat\Acrobat.exe""" 'pat1 = """C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe""" (this is the default, and I don't want to change the reg). pat3 = "D:\__Numerical_Files_by_Page\" & iint & ".pdf" pat3 = """" & pat3 & """" Shell pat1 & " " & pat3, vbNormalFocus JJmp = x out: End Function 

无论出于何种原因,基于这个函数的超链接都有一些非常奇怪的行为。 正如标题中所述,拖动填充句柄不仅填充单元格,而且还打开每个单元格的Adobe。 其次,超链接是超级敏感的,我甚至不必点击它 – 只要将它hover在上面,就会触发acrobat 10打开。

本质上它是一个非常不稳定的超链接,几乎是自触发的。 如果我直接使用这个函数,我会得到一个需要一些返回键操作才能打开杂技演员的条目。

我只是想这个像一个正常的超链接回应。 TIA

这是因为每次将鼠标hover在链接上或者将其拖到新字段时,excel都会尝试parsing链接,然后再单击它,这意味着它将执行您的function。 那么excel怎么可能保持你的链接是最新的,并在你点击它之前提供它呢? – >你的函数没有被执行的时候点击它,因为Excel认为,你的函数返回一个链接,然后它可以遵循。

你可以尝试这样的: herber hype2macro 。

那么不要在你的UDF中使用Shell 。 你想要的更多是这样的

 Function JJmp(x) As String If Not IsNull(x) And x Like "_*" Then _ JJmp = """C:\Program Files (x86)\Adobe\Acrobat 10.0\Acrobat\Acrobat.exe"" " & _ """D:\__Numerical_Files_by_Page\" & x & ".pdf""" End Function