单元格值更改事件和运行连续macros

我希望我的macros在Sheet1打开时自动运行,并且在列B中的任何下拉菜单中都更改了值。我假设我可以编写几个事件监听器包装器,如:

' pseudocode While Sheet1 is open When a dropdown value is changed in column B Call Update End When End While 

我在网上find了几个链接,但我不太明白。 在这些链接中,他们有代码提及目标。 目标是命名的范围? 我没有运气实现这些。 我在想这些链接可以解决我的问题。
http://www.mrexcel.com/forum/excel-questions/95341-running-macro-continuously.html
http://msdn.microsoft.com/en-us/library/office/ff839775(v=office.15).aspx

您可以使用工作表事件macros:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim rB As Range Set rB = Range("B:B").Cells.SpecialCells(xlCellTypeAllValidation) If Intersect(Target, rB) Is Nothing Then Else Application.EnableEvents = False Call Update Application.EnableEvents = True End If End Sub 

因为它是工作表代码,所以安装和自动使用非常简单:

  1. 右键单击Excel窗口底部附近的选项卡名称
  2. select查看代码 – 这会popup一个VBE窗口
  3. 粘贴东西,closuresVBE窗口

如果您有任何疑问,请先在试用工作表上尝试。

如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除macros:

  1. 调出上面的VBE窗口
  2. 清除代码
  3. closuresVBE窗口

要了解有关macros的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

要了解有关事件macros(工作表代码)的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/event.htm

macros必须启用这个工作!

你将需要的是一个类似于这样的Worksheet_Changed事件:

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Column("B")) Is Nothing Then Application.EnableEvents = False Call Update Application.EnableEvents = True End If End Sub 

如果在列B中进行了任何更改,则会触发。目标由应用程序事件提供,并且是进行更改的范围。

编辑:你将需要把这个在工作表的代码,而不是一个模块。 如果您右键单击Excel屏幕底部的工作表选项卡,其中一个选项是查看代码。