首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >每当单元格发生更改时,excel VBA都会自动运行宏

每当单元格发生更改时,excel VBA都会自动运行宏
EN

Stack Overflow用户
提问于 2013-03-11 19:05:51
回答 5查看 176.8K关注 0票数 23

有没有一种简单的方法可以让Excel在单元格发生变化时自动执行宏?

有问题的单元应该在Worksheet("BigBoard").Range("D2")

我认为一个简单的Google查询被证明是更复杂的--每个样本都涉及交叉点(不管是什么),或者颜色格式,或者任何其他看起来不相关的东西。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-11 19:10:03

是的,这可以通过使用工作表事件来实现:

在Visual Basic编辑器中,打开您感兴趣的工作表(即"BigBoard"),双击左上角树中的工作表名称。将以下代码放入模块中:

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Me.Range("D2")) Is Nothing Then Exit Sub
        Application.EnableEvents = False 'to prevent endless loop
        On Error Goto Finalize 'to re-enable the events      
        MsgBox "You changed THE CELL!"
    End If
Finalize:        
    Application.EnableEvents = True
End Sub
票数 40
EN

Stack Overflow用户

发布于 2013-03-11 21:13:00

另一种选择是

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
    IF Target.Address = "$D$2" Then
        MsgBox("Cell D2 Has Changed.")
    End If
End Sub

我相信这比Intersect使用的资源更少,如果你的工作表变化很大,这将会很有帮助。

票数 19
EN

Stack Overflow用户

发布于 2015-07-25 01:15:52

在尝试找到一种方法来使intersect方法的目标单元格成为名称表数组时,我偶然发现了一种简单的方法,可以在特定工作表上的任何单元格或单元格集合发生变化时运行某些内容。此代码也放在工作表模块中:

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 0 Then
'mycode here
end if
end sub
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15337008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档