这个Excel中的VBA术语具体是指什么?

来源:百度知道 编辑:UC知道 时间:2024/06/07 04:27:10
为何直接将下面的代码复制进代码窗口后行不通?
Private Sub Worksheet_Change(ByVal Target As Range)
If [d2] < [c5] Then
MsgBox "请检查输入数据"
End If
End Sub

这句具体是指什么Worksheet_Change(ByVal Target As Range)
其余的明白,就这句不明白。不是直接用SUB AAA() End Sub作为开始和结束语句么?

Worksheet_Change是工作表改变事件,当工作表输入内容后,就调用Private Sub Worksheet_Change(ByVal Target As Range)过程。
这个程序不能放要模块里,要放在某一个表的代码窗口里。即在“工程资源管理器”里选择某一个表,然后再粘贴在右边的代码窗口里。

估计应该加一段判断语句,判断D2和C5单元格是否改变,才执行检查D2是否小于C5,否则任何单元格改变都会触发这一事件.
试一下:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow, iCol As Integer
iRow = Target.Row
iCol = Target.Column
If ((iRow = 2 And iCol = 4) Or (iRow = 5 And iCol = 3)) And Target <> "" Then
Application.EnableEvents = False
If [d2] < [c5] Then
MsgBox "请检查输入数据"
End If
Application.EnableEvents = True
End If
End Sub

这段代码是数据有效性检查:如果D2<C5就提示你
其实这个不需要代码,用条件格式,数据有效性都能办到。
VBA中事件(属性、方法)有很多种,单击双击右键获得焦点失去焦点选择改变等等
,当发生某一事件,就按照写好的处理代码执行。它需要在对应的SHEET代码窗中写代码。去掉那个关键词PRIVATE,就是平常说的模块,宏。

这段代码只能放在某个工作表的代码区域才能起作用
Worksheet_Change(ByVal Target As Range)
是指这个工作表中单元格的内容发生改变时运行其下的代码
而对于SUB AAA() End