【问题标题】:HyperLink click runs function twice and give patch error超链接点击运行功能两次并给出补丁错误
【发布时间】:2020-05-12 17:30:34
【问题描述】:

从标题你已经可以看出我的问题了。

从我这边想想:

我知道肯定可以通过创建布尔值或检查并处理错误来运行宏一次(我仍然不知道如何)。

我想知道为什么宏运行两次。我的猜测是它需要鼠标移动或类似的想法。

如何解决?

或者使用捕获文本点击的更好替代方法(我想避免选择更改/更改,我不喜欢使用 FollowHyperlink 链接到同一单元格)。

我正在使用的函数:=HYPERTEXTOVÝ.ODKAZ("#LinkClick()";"CLICK")

英文版:=HYPERLINK("#LinkClick()";"CLICK")

Function LinkClick()

Range("A1").Value = Range("A1").Value + 1

End Function

它应该是相同的功能。只是我的语言不同:

https://support.office.com/cs-cz/article/hypertextov%C3%BD-odkaz-funkce-333c7ce6-c5ae-4164-9c47-7de9b76f577f

https://support.office.com/en-us/article/hyperlink-function-333c7ce6-c5ae-4164-9c47-7de9b76f577f?omkt=en-US&ui=en-US&rs=en-US&ad=US

PS:我的第一篇文章和我的英语不是最好的。感谢您的任何回答。

【问题讨论】:

标签: excel vba


【解决方案1】:

您需要Set LinkClick = Selection,以便您返回一个包含您的函数的单元格,否则链接无效。

根据documentation,您的公式=HYPERLINK("#LinkClick()";"CLICK") 需要link_location 作为第一个参数HYPERLINK(link_location, [friendly_name])。但是因为你有一个函数调用 "#LinkClick()" 该函数需要返回一个有效的链接位置,这就是 Set LinkClick = Selection 所做的,它将实际选择作为链接位置返回,所以超链接选择已经选择的内容(意味着它什么都不做,但它不会抱怨链接位置无效)。

Option Explicit

Public Function LinkClick() As Range
    Set LinkClick = Selection 'make sure a valid link location is returned in the function

    ActiveSheet.Range("A1").Value = ActiveSheet.Range("A1").Value + 1
End Function

【讨论】:

  • 我错过了他的代码中的这一部分。我通过反射使用了Set LinkClick = Selection,并且该功能按预期工作......我将删除我上面的​​cmets。这一定是他的问题!
  • 哦,是的,谢谢。我复制粘贴另一个函数并用我的代码替换集合(它没有将 1 添加到范围 A1 :D)。所以这是我的愚蠢。
猜你喜欢
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
  • 1970-01-01
  • 2018-10-28
相关资源
最近更新 更多