合并多个 Worksheet_SelectionChange

kop*_*psy 1 excel vba

我在运行一个 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我感谢您的帮助。谢谢你。

Cyr*_*ril 5

您可以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

Run Code Online (Sandbox Code Playgroud)

Exit Sub对于每一列,我添加了行 > 27的检查,因为您的范围是 1:27。这将取代Intersect()支票。

您根据 执行相同的操作Target.Column,因此这是唯一要验证和利用的其他参数。

  • 我认为你的意思是“Target.Row < 2 或 Target.Row > 27”。 (2认同)