如何检测单元格阵列中的点击

时间:2019-03-07 20:04:37

标签: excel vba

我正在用Excel创建任务日历。 主页是一个年度日历,其中显示了所有的月份和日期。 每个月都有单独的标签来显示任务。他们将根据条件“即将到期”,“今天到期”和“到期”来向年度日历提供颜色。 我想做的是: 如果有人点击月份(由一列单元格说((1月为B2:I7; 2月为j2:I7等)组成),它将进入相应的月份标签。我知道使工作表处于活动状态的所有编码,如果单击数组中的任何单元格(没有长循环列表),我需要的是“触发”。

1 个答案:

答案 0 :(得分:0)

工作表的代码模块上,您可以通过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