Объединение нескольких Worksheet_SelectionChange - PullRequest
1 голос
/ 04 февраля 2020

У меня нет проблем с запуском одного частного 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

Я ценю вашу помощь. Спасибо.

1 Ответ

5 голосов
/ 04 февраля 2020

Вы можете использовать переключатель (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, так что это единственный другой параметр для проверки и использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...