我运行一个 Private Sub Worksheet_SelectionChange 没有问题,但是当我添加多个 Worksheet_SelectionChange 事件时,它没有运行。后来,我才知道不可能在同一张工作表中运行不同的工作表选择更改事件。
根据我的理解,我有四个不同的 Private Sub Worksheet_SelectionChange 事件,试图在各个站点的帮助下合并它们,但没有一个对我有用。
我能得到一些帮助吗
1.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cells1 As Range
Set cells1 = ActiveSheet.Range("B1:B27")
If Not (Intersect(Target, cells1) Is Nothing) Then
ActiveSheet.Range("B30").Value = Target.Value
End If
End Sub
2.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cells2 As Range
Set cells2 = ActiveSheet.Range("C1:C27")
If Not (Intersect(Target, cells2) Is Nothing) Then
ActiveSheet.Range("C30").Value = Target.Value
End If
End Sub
3.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cells3 As Range
Set cells3 = ActiveSheet.Range("S1:S27")
If Not (Intersect(Target, cells3) Is Nothing) Then
ActiveSheet.Range("S30").Value = Target.Value
End If
End Sub
4.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cells4 As Range
Set cells4 = ActiveSheet.Range("T1:T27")
If Not (Intersect(Target, cells4) Is Nothing) Then
ActiveSheet.Range("T30").Value = Target.Value
End If
End Sub
我感谢您的帮助。
谢谢你。
最佳答案
您可以在更改事件中使用开关 (select case
) 来允许发生的选项。
小样:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row > 27 then Exit Sub
Select Case Target.Column
Case 2, 3, 19, 20
Cells(30,Target.Column).Value = Target.Value
End Select
End Sub
我添加了
Exit Sub
检查每个列的行是否 > 27,因为您的范围是 1:27。这取代了 Intersect()
查看。您根据
Target.Column
执行相同的操作,因此这是唯一需要验证和利用的其他参数。
关于excel - 合并多个 Worksheet_SelectionChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60061467/