Excel的VBA宏运行时自动细胞改变

问题描述:

有一个简单的办法让Excel将自动执行宏每当小区改变?Excel的VBA宏运行时自动细胞改变

在该小区将是Worksheet("BigBoard").Range("D2")

我以为会是一个简单的谷歌查询被证明是更复杂 - 每个样本涉及相交(不管这些是)或颜色格式或其他一些事情这似乎是无关紧要的。

+0

使用Peter Albert的答案。不要害怕交叉线,这就是为什么VBA知道你正在监视哪些单元格的变化。并且他拥有MsgBox的地方,这就是你称之为宏的地方。这是最简单的方法。的[在小区改变自动执行的Excel宏] – Dan 2013-03-11 11:12:42

+0

可能重复(http://*.com/questions/409434/automatically-execute-an-excel-macro-on-a-cell-change) – MackM 2015-08-12 18:31:38

+1

请你标记为你工作的答案,所以这个问题不再显示为未答复?先谢谢你! – 2015-11-09 10:11:09

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

在Visual Basic编辑器中打开你的在树中的工作表的名称通过双击感兴趣的(即“BigBoard”)的工作表左上角。将模块中下面的代码:

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!" 
Finalize:   
    Application.EnableEvents = True 
End Sub 
+0

非常感谢你的工作。为了充分理解,表达如何相交(目标)...在更简单的情况下表演? – kamelkid2 2013-03-11 11:18:54

+1

它测试D2是在细胞范围内还是细胞发生了变化(即 - 目标的一部分)。如果不是,则代码退出。 +1 btw – brettdj 2013-03-11 11:30:17

+2

'Insersect(rng1,rng2)'返回两个输入范围“相交”的范围。因此,如果改变的单元格和D2的交点是空的,其他的东西就会被改变,你不希望宏继续前进。顺便说一句:如果它解决了你的问题,请点击对号将其标记为解决方案! – 2013-03-11 11:57:20

另一种选择是

Private Sub Worksheet_Change(ByVal Target As Range) 
    IF Target.Address = "$D$2" Then 
     MsgBox("Cell D2 Has Changed.") 
    End If 
End Sub 

我相信这比使用资源Intersect少,如果你的工作改变了很多,这将是有帮助的。

+0

更简单,没有我在选定答案中提到的错误。 – alej27 2017-02-26 17:18:45

在试图找到一种方法,使对交叉方法的名字表阵列的靶细胞,我碰到一个简单的方法时偶然发现在一个特定的变化片设置细胞的任何细胞或运行的东西。此代码也放置在工作表模块中:

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Cells.Count > 0 Then 
'mycode here 
end if 
end sub