0

オブジェクト (チェック ボックス) をワークシート コードからモジュールに渡して、そのプロパティ (値と背景色) を更新します。

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

プロパティ (値と背景色) は、コードが呼び出し元のプロシージャに戻り、このプロシージャが終了するまで、このモジュールで更新されません。ただし、セルの内部の色は、呼び出されたプロシージャ内ですぐに更新されます。チェック ボックスのプロパティがすぐに更新されないのはなぜですか?

4

1 に答える 1

0

どのバージョンの Excel を使用していますか? 2010 年には、呼び出されたルーチンでコントロールが更新され、それに応じてプロパティ値が変更されていることがわかります。

于 2013-06-03T13:28:27.403 に答える