2016-09-18 47 views
0

私は、自動的に新しいチェックボックスを生成し、それにセルをリンクするために、次のコードを使用します。戻りCheckBoxes.LinkedCellアドレスVBA

ActiveSheet.CheckBoxes.Add().LinkedCell = Selection.Address 

私は.LinkedCellセルの背景色を変更する必要のある別のsubを作成したいです(青)またはチェックされていない(赤)のチェックボックスをオンにします。ワークシートに約200のチェックボックスがあります。

subがそのセルの背景色を変更できるように、現在チェック/チェックされていないチェックボックスの.LinkedCellアドレスを取得/返信する方法はありますか?

たとえば、.LinkedCellがチェックボックスが最初に配置されたセルであるとします。これは、各チェックボックスの初期状態のようになります。私はこのコードを使用し、今まで

enter image description here

enter image description here

と、これはユーザーの確認後の結果だろう/ checboxesのチェックを外しますチェックボックス自体の背景色を変更します。しかし、私はそれを望んでいない、私は.LinkedCellの色を変更したい。

Sub SetMacro() 
    Dim cb 
    For Each cb In ActiveSheet.CheckBoxes 
     If cb.OnAction = "" Then cb.OnAction = "CheckedUnchecked" 
    Next cb 
End Sub 

Sub CheckedUnchecked() 
    With ActiveSheet.Shapes(Application.Caller).DrawingObject 
     If .Value = 1 Then 
      .Interior.ColorIndex = 5 
     Else 
      .Interior.ColorIndex = 3 
     End If 
    End With 
End Sub 
+0

を、私はあなたが "現在チェック/未チェックチェックボックス" によって何を意味するかわからないんだけど?あなたはイベントをお探しですか? – Comintern

+3

(a) 'TRUE'か' FALSE'かに基づいて条件付きでセルをフォーマットできますか? – YowE3K

+0

(b)CheckBoxのClickイベントにリンクされたコードがありますか?その場合は、CheckBoxの.LinkedCellプロパティを使用し、そのセルの背景色を好きなものに設定するだけです。 – YowE3K

答えて

2

次を使用してCheckedUncheckedコードを置き換えることができます:

Sub CheckedUnchecked() 
    With ActiveSheet.Range(ActiveSheet.CheckBoxes(Application.Caller).LinkedCell) 
     If .Value Then 
      .Interior.ColorIndex = 5 
     Else 
      .Interior.ColorIndex = 3 
     End If 
    End With 
End Sub 
+0

ありがとうございます。これは私の問題を解決:) – user3185735

関連する問題