2016-09-18 185 views
0

我用下面的代碼自動生成一個新的複選框和細胞鏈接到它:返回CheckBoxes.LinkedCell解決VBA

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

我想創建另一個sub應該改變.LinkedCell單元格的背景顏色當複選框被選中(藍色)或未選中(紅色)時,選中複選框。我將在工作表中有大約200個複選框。

有沒有辦法獲取/返回當前選中/未選中複選框的.LinkedCell地址,以便sub可以更改該單元格的背景顏色?

例如,讓我們假設.LinkedCell是最初放置複選框的單元格。這將是每個複選框的初始狀態:

enter image description here

,並且這將是用戶檢查後的結果/取消選中checboxes:

enter image description here

直到現在我用這個代碼更改複選框本身的背景顏色。但我不想那樣,我想改變.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