首页 > 解决方案 > 如何检测单元格数组中的点击

问题描述

我正在excel中创建一个任务日历。首页是显示所有月份和日期的年历。每个月都有单独的选项卡来显示任务。他们将根据“即将到期”、“今天到期”和“到期”等标准为年历提供颜色。我想要做的是:如果有人点击月份(由一组单元格组成(B2:I7 表示一月;j2:I7 表示二月等),它将转到相应的月份选项卡。我知道所有编码以使工作表处于活动状态,如果单击数组中的任何单元格(没有长循环列表),我需要的是“触发器”。

标签: excelvba

解决方案


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

推荐阅读