Как я могу обнаружить щелчок в массиве ячеек - PullRequest
1 голос
/ 07 марта 2019

Я создаю календарь задач в Excel.Главная страница - это годовой календарь со всеми месяцами и днями.Для каждого месяца предусмотрены отдельные вкладки для отображения задач.Они будут подавать цвета в годовой календарь на основе критериев.Я хочу сделать следующее: если кто-то нажмет на месяц (состоящий из множества ячеек (B2: I7 для января; j2: I7 для февраля и т. Д.), Он перейдет на соответствующую вкладку месяца. Я знаю всекодирование, чтобы сделать лист активным, мне нужен «триггер», если щелкнуть любую ячейку в массиве (без длинного списка петель).

1 Ответ

0 голосов
/ 07 марта 2019

В кодовом модуле рабочего листа вы можете проверить с помощью Intersect, находится ли выбор в общем календарном диапазоне, а затем использовать Range.Area мультидиапазона для определения номера месяца:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim RelevantArea As Range
    Dim Calendar As Range
    Dim i As Long

    Set Calendar = Me.Range _
        ("B03:H10,J03:P10,R03:X10," & _
         "B12:H19,J12:P19,R12:X19," & _
         "B21:H28,J21:P28,R21:X28," & _
         "B30:H37,J30:P37,R30:X37")

    Set RelevantArea = Intersect(Target, Calendar)
    If Not RelevantArea Is Nothing Then
        For i = 1 To Calendar.Areas.Count
            If Not Intersect(Target, Calendar.Areas(i)) Is Nothing Then
                MsgBox "Month " & i & " selected."
                'Me.Parent.Sheets(1 + i).Activate
                Exit For
            End If
        Next i
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...