まりふのひと

Excel/右クリックで「欠礼年」を入力するマクロ(VBA)

古い日経パソコン(No.599 2010.04.12)を整理していたら、ページを折った個所があった。

森本家のワークシート「ワンクリックでチェックを入れたい
日経パソコン No.599 2010.04.12)

 紙に印刷した一覧表に鉛筆やボールペンでチェックを入れていく。仕事の現場ではよくあるシーンです。これをExcelの画面上でやろうとすると意外に手間が掛かります。キーボードから文字を打つのは面倒ですし、マウスでクリックできるチェックボックスを配置していくのは、設定作業自体にたいへんな時間と労力を要します。
 そこで今回、マウスでセルを右クリックするだけで「●」マークを入れられるワークシートを作りました…


Excel住所録の「欠礼」の入力に使えないか作ってみた。但し、実際に組み込むにはまだ改良点がある。


 完成したコード

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'概要:右クリックで今年の西暦年を入力する。
'引用:日経パソコン No.599 2012.04.12 森本家のワークシート
Dim mbTitle As String
Dim C As Variant
Dim nowYear As Long
Dim lngC As Long
Dim varAns As Variant

    mbTitle = "右クリックで欠礼年"
    nowYear = Year(Now)
        '複数のセルを選択している場合は終わる。
    If Selection.Cells.Count <> 1 Then Exit Sub
    
    Select Case Target.Column
        '指定列の場合
      Case 7
        C = Target.Text
        If C = "" Then
            Selection.Value = nowYear
        Else
            lngC = Val(C)
            If lngC > 0 And lngC < nowYear Then
                Selection.Value = nowYear
            ElseIf lngC = nowYear Then
                Selection.Value = ""
            Else
                varAns = MsgBox("「欠礼年」に置き換えます?" & vbCrLf & vbCrLf _
                        & " ■現データ=" & C & vbCrLf _
                        & " ■欠礼年=" & nowYear _
                        , vbYesNo, mbTitle)
                If varAns = vbNo Then Exit Sub
                Selection.Value = nowYear
            End If
        End If
            '右クリックメニューを出さない。
        Cancel = True
        
    End Select
                
End Sub