单元格值的变化由Worksheet_Change
事件句柄捕获。
但是,即使是错误更改,此句柄也会触发。例如,如果更改前的单元格值为“A”,而用户刚刚在该单元格中再次输入“A”,则无论如何都会触发更改事件过程。
为了避免这种情况,我们可以一起使用Worksheet_Change
和Worksheet_SelectionChange
。
使用Worksheet_SelectionChange
,我们在某处记录旧值,例如 a Name
。然后使用Worksheet_Change
,我们可以将用户输入的内容与 进行比较,Name
以查看是否进行了真正的更改。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Nm As Name: Set Nm = ActiveWorkbook.Names("OldValue")
If Target.Count = 1 Then
'This only record one old cell value.
'To record multiple cells old value, use a hidden Worksheet to do so instead of a Name.
Nm.Comment = Target.Value2
else
Nm.Comment = Target.Value2(1, 1)
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nm As Name: Set Nm = ActiveWorkbook.Names("OldValue")
If Target.Value2 <> Nm.Comment Then
Debug.Print "True change"
Else
Debug.Print "False change"
End If
End Sub
您可以通过对象访问表的方法和属性listobject
。以下是如何执行此操作的示例。
Sub Example()
Dim lo As ListObject
Dim lc As ListColumn
Set lo = Range("Table1").ListObject
Set lc = lo.ListColumns("Column2")
End Sub
也就是说,对于您的情况,它将是Range("A_").ListObject.ListColumns("OPERATION").DataBodyRange
.