Excel VBA에서 마우스로 깜박임과 선택할 수 있는 표 만들기

8484 단어 VBAExcelVBA

개요



클릭이나 드래그로 선택하고 있는 것처럼 보이는 표를 매크로로 만든다.
보이는 것만으로 내부에서 뭔가 데이터를 유지하는 것은 아니다.



코드



Sheet1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Const ROW_START As Long = 3         '表のデータが始まる行
    Const COL_START As Long = 2         '     "      始まる列
    Const COL_END As Long = 4           '     "      終わる列
    Const COLOR_OFF As Long = &HFFFFFF  '非選択状態のセルの色
    Const COLOR_ON As Long = 14083324   '選択状態のセルの色
    Const COL_SELECT As Long = 2        '選択状態かどうかの値を入れる列
    Const COL_TARGET As Long = 3        '最終行を取得するための列

    '表の外なら何もせずに終了
    If Target.Row + Target.Rows.Count - 1 < ROW_START Then Exit Sub
    If Target.Column + Target.Columns.Count - 1 < COL_START Then Exit Sub
    If COL_END < Target.Column Then Exit Sub

    With Sheet1
        '表の最終行より下なら終了
        Dim lr As Long
        lr = .Cells(.Rows.Count, COL_TARGET).End(xlUp).Row
        If Target.Row > lr Then Exit Sub

        '反転させる行を特定
        Dim sr As Long
        Dim er As Long
        sr = WorksheetFunction.Max(Target.Row, ROW_START)
        er = WorksheetFunction.Min(Target.Row + Target.Rows.Count - 1, lr)

        '反転
        If .Cells(sr, COL_TARGET).Interior.Color <> COLOR_OFF Then
            .Range(.Cells(sr, COL_START), .Cells(er, COL_END)).Interior.Color = COLOR_OFF
            .Range(.Cells(sr, COL_SELECT), .Cells(er, COL_SELECT)).Value = ""
        Else
            .Range(.Cells(sr, COL_START), .Cells(er, COL_END)).Interior.Color = COLOR_ON
            .Range(.Cells(sr, COL_SELECT), .Cells(er, COL_SELECT)).Value = "v"
        End If
    End With
End Sub

기타



명부라든가로부터 GUI인 느낌으로 선택해 주실 때에 딱 좋다.
첨부 사진의 「선택」열은, 폰트를 "Magneto"로 하고 「v」를 체크 마크 같게 보이도록 일 연구.

좋은 웹페이지 즐겨찾기