这是一个非常简单,有限的例子。我们只监视包含公式的单元格B5。式检索来自另一个工作表的日期:
在用于这个片我们安装以下事件宏工作表代码区:
Private Sub Worksheet_Calculate()
Dim Monitor As Range, Helper As Range
Dim rw As Long
Set Monitor = Range("B5")
Set Helper = Range("H5")
rw = Monitor.Row
Application.EnableEvents = False
If Helper.Value = "" Then
Helper.Value = Monitor.Value
Else
If Helper.Value <> Monitor.Value Then
Helper.Value = Monitor.Value
Range("C" & rw & ":E" & rw).ClearContents
End If
End If
Application.EnableEvents = True
End Sub
代码使用细胞H5为“助手“代码第一次运行时,辅助单元被填充。每一次之后,代码比较“助手”对H5。如果他们变得不同,细胞Ç该行通ê被清除。
因为它是工作表的代码,这是非常容易安装和自动使用:
- 右键单击靠近Excel窗口底部的标签名称
- 选择查看代码 - 这带来了一个VBE窗口
- 粘贴的东西并关闭VBE窗口
如果您有任何问题,首先尝试在一个审判工作。
如果保存工作簿,宏将与其一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件保存为.xlsm而非 。XLSX
要删除宏:
- 弹出VBE窗口如上
- 清晰的代码进行
- 关闭VBE窗口
要了解更多关于宏一般,参见:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解更多有关事件宏(工作表的代码),请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
宏必须为此工作启用!
编辑#1:
完全抛弃原来的宏和安装这一个,而不是:
Private Sub Worksheet_Calculate()
Dim Monitor As Range, Helper As Range
Dim rw As Long, r As Range
Set Monitor = Range("B2:B100")
Set Helper = Range("H2:H100")
Application.EnableEvents = False
For Each r In Helper
If r.Value = "" Then
r.Value = r.Offset(0, -6).Value
End If
Next r
For Each r In Helper
If r.Value <> r.Offset(0, -6).Value Then
r.Value = r.Offset(0, -6).Value
rw = r.Row
Range("C" & rw & ":E" & rw).ClearContents
End If
Next r
Application.EnableEvents = True
End Sub
正如你看到的,我们必须遍历的范围内的每个项目。
查看Worksheet_Change事件及其Target参数。 –
@Doug Glancy这是我做的,但它不工作,直到手动更改C列中的日期2工作表Private Sub Worksheet_Change(ByVal目标作为范围) 如果不相交(目标,范围(“b1:b100”))然后 细胞(Target.Row,3)= “” 细胞(Target.Row,4)= “” 细胞(Target.Row,5)= “” 结束如果结束 子 –
由于日期中列** B **通过*公式输入*您需要使用* Calculate *事件来捕捉更改。 –