您需要先在控件的引用中添加对 Microsoft Excel x.x 库的引用。
接下来,您应该添加一个 Excel.Worksheet 类型的私有模块级变量,并将其声明为 WithEvents,例如
Private WithEvents m_oWorksheet As Excel.Worksheet
您还应该创建一个名为 Worksheet 的 Property Set 过程来设置此变量。
然后你应该为其更改事件添加代码,例如
Private Sub m_oWorksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row = 2 Then ' m_oWorksheet.Range("A2")
'Do some coding here
End If
End Sub
很明显,.Column = 1 和 .Row = 2 会被你感兴趣的单元格坐标替换掉。我原来用的坐标像“A2”,结果发现返回的对象是m_oWorksheet.Range("A2")不能直接与 Target 对象比较,例如
If Target Is m_oWorksheet.Range("A2") Then
我试图从 Target 中提取单元格引用“A2”,但我似乎无法找到方法,除非您编写一个函数来将 Column/Row 转换为字符串引用。
请注意我之前提供的答案是非常错误的,因为我正在测试
If Target = m_oWorksheet.Range("A2) Then
... 这只是因为默认值属性是相同的。如果任何更改的单元格与“监视”单元格具有相同的值,这将失败。