需要在excel中刷新数据时运行VBA宏
我试图提示宏在数据刷新时运行。我有需要运行生成的宏,但是我遇到了一个问题,即没有使用新值,因为嵌入在工作表中的宏是使用ActiveX ComboBox调用的 我发现有几个例子,人们提到AfterRefresh和BeforRefresh,但我认为我误解了这将如何生效,并将其称为宏 我目前正在运行ComboBoxs,因此有多个需要在excel中刷新数据时运行VBA宏,vba,excel,Vba,Excel,我试图提示宏在数据刷新时运行。我有需要运行生成的宏,但是我遇到了一个问题,即没有使用新值,因为嵌入在工作表中的宏是使用ActiveX ComboBox调用的 我发现有几个例子,人们提到AfterRefresh和BeforRefresh,但我认为我误解了这将如何生效,并将其称为宏 我目前正在运行ComboBoxs,因此有多个 Private Sub ComboBox22_Change() 'do stuff End Sub. 但我需要在数据刷新时执行“do stuff”,包括在工作表打开时自动执
Private Sub ComboBox22_Change()
'do stuff
End Sub.
但我需要在数据刷新时执行“do stuff”,包括在工作表打开时自动执行的刷新
我不想将刷新绑定到特定的框,因为刷新的项不依赖于任何一个数据更改实例
非常感谢您的帮助
多谢各位 在这种情况下,工作表更改事件可能会有所帮助 右键单击工作表选项卡,选择“查看代码”,选择“工作表”,然后选择“更改” 当特定范围的单元格被更改时,代码将自动生效
您还可以使用“数据透视表更新事件”来运行宏。您的设置方式与上面的DaveExcel答案类似 所讨论的连接可能不是透视表,但您可以使用一个小而快速的透视表作为触发器 将数据透视表设置为与连接同时更新(例如,设置为每5分钟自我刷新一次或在工作簿打开时自动刷新)。您的回答中有以下注释:“我发现
工作表\u change
对此很有用,但不是理想的答案,因为自动刷新不会触发更改事件?但会提示一个计算。如果你有办法解决这个问题,那就有用了!"
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub ' this stops code error if more than one cell is changed at once
If Not Application.Intersect(Target, Me.Range("A1:C10")) Is Nothing Then ' indicates the Target range
MsgBox "You have changed " & Target.Address & " to " & Target
End If
End Sub