業務で自作したマクロです。
処理実施後に、特定のセルに処理の実施が必要であったかを「はい/いいえ」で入力しセルを塗りつぶします。
シートの[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