【问题标题】:VBA Changing A Value, to Call a Macro. IgnoreVBA 更改值,调用宏。忽视
【发布时间】:2018-07-01 03:22:38
【问题描述】:

您好 Stack Overflow 社区!我是 VBA 脚本的主要菜鸟,并认为我有一个简单的问题?我的工作表上有一些简单的代码,每次在特定单元格中更改值时都会调用一个函数。

问题是,单元格是一个下拉菜单,当您将下拉菜单的选择更改为相同的值时,它仍然运行代码..

明确地说,我希望代码在下拉列表更改时运行。只是不是当它“更改”为相同的值时。在下面粘贴我的代码。让我知道您是否可以提供帮助!


Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$W$21" Then
        Call Financing
    End If
End Sub

我在想也许可以添加一个 .ignore 或其他什么?

【问题讨论】:

标签: excel vba function


【解决方案1】:

保持前一个值的静态值并在启动 Financing 子程序之前进行比较。

Private Sub Worksheet_Change(ByVal Target As Range)
    static oldW1  as variant
    If Target.Address = "$W$21" Then
        if target.value <> oldW1 then
            oldW1 = Target.value
            Call Financing
        end if
    End If
End Sub

静态变量被声明它们的子过程或函数“记住”。通常,当 Worksheet_Change 完成并退出时,oldW1 将被“忘记”(并被破坏)。但是,对于静态 oldW1,第二次(以及所有后续时间)输入 Worksheet_Change,它会“记住”最后一次使用 oldW1 的值。

这并不意味着静态变量是全局公开的;它仅在声明它的函数或子过程中可用。

【讨论】:

  • 非常感谢!那工作得很好。仍然对它的工作原理有些困惑,但确实如此!
  • 添加了关于静态变量的诽谤。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 2015-07-24
  • 1970-01-01
相关资源
最近更新 更多