需要在excel中的数据刷新上运行VBA宏

时间:2015-03-14 03:55:04

标签: excel vba excel-vba

我试图提示宏在数据刷新时运行。我有需要运行构建的宏,但由于使用ActiveX ComboBoxs调用工作表中嵌入的宏,因此我遇到了未使用的新值的问题。

我发现了一些人们引用AfterRefresh和BeforeRefresh的实例,但我认为我误解了这将如何生效并调用一个宏。

我目前正在运行ComboBoxs,所以我有多个

实例
Private Sub ComboBox22_Change()
'do stuff
End Sub.

但我需要做的事情'在数据刷新时发生,包括自动发生并在打开表单时刷新。

我不想将刷新绑定到特定的框,因为刷新的项目不依赖于任何一个数据更改实例。

非常感谢任何帮助。

谢谢。

2 个答案:

答案 0 :(得分:3)

在这种情况下,工作表更改事件可能会有所帮助。

右键单击工作表选项卡,选择"查看代码",选择"工作表"然后"改变。"

当特定范围的单元格发生变化时,代码将自动启动。

Right Click Sheet Tab enter image description here

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

答案 1 :(得分:1)

您还可以使用Worksheet_pivottableupdate事件来运行宏。你设置它与上面的davesexcel答案类似。

有问题的连接可能不是数据透视表,但您可以使用小而快速的数据透视表作为触发器。

将数据透视表设置为与您的连接同时更新(例如,设置为每5分钟自我刷新一次或在工作簿打开时)。