オブジェクト (チェック ボックス) をワークシート コードからモジュールに渡して、そのプロパティ (値と背景色) を更新します。
Dim Range1 As Range
Set Range1 = Range("K2")
Dim ChkBox1 As Object
Set ChkBox1 = CheckBox1
引き渡しコードは次のとおりです。
If CheckBox1.Value = True Then
SetGreen R1:=Range1, C1:=ChkBox1
Else
SetRed R1:=Range1, C1:=ChkBox1
End If
チェックボックスがチェックされている場合は背景色を green に設定し、チェックされていない場合は red に設定します。
red に設定するために呼び出されるプロシージャ コードは次のとおりです。
Sub SetRed(ByVal R1 As Range, ByVal C1 As Object)
R1.Interior.Color = RGB(255, 0, 0)
With C1
.BackColor = RGB(255, 0, 0)
.Value = False
End With
End Sub
プロパティ (値と背景色) は、コードが呼び出し元のプロシージャに戻り、このプロシージャが終了するまで、このモジュールで更新されません。ただし、セルの内部の色は、呼び出されたプロシージャ内ですぐに更新されます。チェック ボックスのプロパティがすぐに更新されないのはなぜですか?