Excel 我们能换一下吗;工作表\选择在同一工作表中更改

Excel 我们能换一下吗;工作表\选择在同一工作表中更改,excel,vba,Excel,Vba,我们可以在同一张工作表中设置工作表更改和工作表选择更改吗。 如果是,优先顺序是什么 多谢各位 Jean当然可以: Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Debug.Print Target.Row End Sub Private Sub Worksheet_SelectionChange(ByVal myTarget As Range) Debug.Print myTarget.Address

我们可以在同一张工作表中设置工作表更改和工作表选择更改吗。 如果是,优先顺序是什么

多谢各位

Jean

当然可以:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Row
End Sub

Private Sub Worksheet_SelectionChange(ByVal myTarget As Range)

Debug.Print myTarget.Address
End Sub

选择更改首先发生,因为您在更改单元格之前更改了选择。

您可以通过在工作表的VBA中粘贴以下内容来测试这一点:

Private Sub Worksheet_Change(ByVal Target As Range)
  MsgBox "Change"
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  MsgBox "selection change"
End Sub

您会发现,除非在单元格中输入新文本并按enter键移动到新单元格,否则事件通常不会同时触发。在这种情况下,将首先触发“更改”事件,然后触发“选择更改”。

好的,一个将在选择更改时触发,另一个将在通过直接用户交互更改单元格值时触发。您可以使用
Application.EnableEvents=False
函数来隔离它们。请确保在退出sub之前将其返回为true。如果我更改单元格值并按enter键或单击其他位置,\u change在\u SelectionChange之前触发。我不知道为什么,也不知道这取决于什么。