Hello Stack溢出社区!我是VBA脚本的主要Noob,认为我有一个简单的问题?我的工作表上有一些简单的代码,每次在特定单元格中更改值时都会调用一个函数。
问题在于,单元格是一个下拉菜单,当您将下拉菜单的选择更改为相同的值时,它仍然运行代码。
要清楚,我希望代码在下拉列表更改时运行。只是当它“更改”为相同值时不是。在下面粘贴我的代码。让我知道您能否提供帮助!
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$W$21" Then
Call Financing
End If
End Sub
我在想也许添加.ignore之类的东西?
答案 0 :(得分:0)
保留前一个值的静态值并在启动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的值是上次使用它的值。
这并不意味着静态var是全局公开的;它仅在声明它的函数或子过程中可用。