【问题标题】:Excel worksheet().Activate not working within functionExcel worksheet().Activate 在函数内不起作用
【发布时间】:2018-04-04 13:50:43
【问题描述】:

我正在努力让我的文档中的另一个选项卡在我正在运行的函数中激活 - 我调试时它工作正常,但只要我运行它,其余代码就会运行,但它只是没有切换标签。

这里是一些代码的sn-p

Function HyperlinkClick()

'Run some other Code...

Worksheets("Delivery Note").Activate

End Function

我在一个单独的模块中将它作为一个函数运行,因为我需要让它从一个超链接链接,该超链接仅在填写时在每一行上创建,即:

=IF(C2>0,HYPERLINK("#HyperlinkClick()","Reprint"),"")

有没有人知道为什么会这样或以其他方式实现这一目标?

感谢期待!

【问题讨论】:

  • 只是不要使用激活。它是 VBA 中最可笑的命令之一,因为它非常不稳定。更好的是明确命名您的以下代码正在影响的工作表。另见:stackoverflow.com/questions/10714251/…
  • @Luuklag:大喊大叫。除了视觉参考之外,我不知道为什么 .Activate 甚至可以在 VBA 中使用。除了不总是工作和减慢 VBA 代码之外,它没有任何作用
  • 感谢您的 cmets - 但是我应该澄清一下,我没有将 .Activate 用于任何实际运行的代码等,但我只是想让该选项卡在它之后对用户可见已运行。
  • @Luuklag 也参考您对 # 的评论 - 我只是这样做:stackoverflow.com/questions/33114093/… 它似乎有效
  • 您不能让工作表公式激活电子表格。 support.microsoft.com/en-us/help/170787/…

标签: vba excel


【解决方案1】:

在从超链接引发的函数中可以执行的一些限制适用(尽管与 UDF 的做法不完全一样),但是如果您希望链接将您带到不同的位置,请从您的函数中返回该位置:

Function HyperlinkClick()

    'other code here (with restrictions)

    Set HyperlinkClick = Worksheets("Delivery Note").Range("A1")

End Function

【讨论】:

  • 太完美了!是的,这是一种享受——我知道一定有一个相当简单的方法!非常感谢。
猜你喜欢
  • 2019-06-12
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 2016-10-23
  • 2020-12-06
  • 1970-01-01
  • 2010-11-06
相关资源
最近更新 更多