LoginSignup
0
0

More than 5 years have passed since last update.

ダブルクリックするとセルを塗りつぶすマクロ

Last updated at Posted at 2015-12-28

業務で自作したマクロです。

処理実施後に、特定のセルに処理の実施が必要であったかを「はい/いいえ」で入力しセルを塗りつぶします。
シートの[Worksheet_BeforeDoubleClick]イベントから呼び出す形で利用します。

DblClkAndSet.vb
'
'Call (Target, Cancel, ・・・
'
'//第1引数:Worksheet_BeforeDoubleClickイベントのtarget引数(上のcall文の引数をそのまま使う)
'//第2引数:Worksheet_BeforeDoubleClickイベントのcancel引数(上のcall文の引数をそのまま使う)
'//第3引数:操作中/中断の判定(True=操作中,False=操作中断)
'//第4引数:ダブルクリックする列の列番号
'//第5引数:作業の列番号("あり"/"なし"を入れる列)
'//第6引数:実際に色をつける範囲の先頭列番号
'//第7引数:実際に色をつける範囲の最終列番号

Const STR_VALUE_YES As String = "あり"
Const STR_VALUE_NO As String = "なし"


Sub DblClkAndSet(ByRef argTarget As Range, ByRef argCancel As Boolean, ByVal argFlg As Boolean, _
                         ByVal argOpeClm As Integer, ByVal argDisposal As Integer, ByVal argPtnStgSt As Integer, ByVal argPtnStgEd As Integer)

    '------塗りつぶしの色を指定----------
    Dim LNG_PTN_CLR As Long
    LNG_PTN_CLR = RGB(51, 153, 51)
    '------------------------------------


    If Not IsArray(argTarget) Then

        If argTarget.Column = argOpeClm And argFlg = True Then

            Select Case MsgBox("塗りつぶしますか" & vbCrLf & _
                      "はい  =あり(入力済みのときは塗りつぶしのみ)" & vbCrLf & _
                      "いいえ=なし(入力済みのときは塗りつぶしのみ)" & vbCrLf & _
                      "キャンセル=塗りつぶししない", vbYesNoCancel + vbDefaultButton3)
                Case vbYes
                    Range(Cells(argTarget.Row, argPtnStgSt), Cells(argTarget.Row, argPtnStgEd)).Interior.Color = LNG_PTN_CLR

                    If Cells(argTarget.Row, argDisposal).Value = "" Then
                        Cells(argTarget.Row, argDisposal).Value = STR_VALUE_YES
                    End If

                Case vbNo
                    Range(Cells(argTarget.Row, argPtnStgSt), Cells(argTarget.Row, argPtnStgEd)).Interior.Color = LNG_PTN_CLR

                    If Cells(argTarget.Row, argDisposal).Value = "" Then
                        Cells(argTarget.Row, argDisposal).Value = STR_VALUE_NO

                    End If

                Case vbCancel
                    '操作なし
            End Select

            argTarget.Activate
            argCancel = True
        End If
    End If
End Sub
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0