Without seeing your worksheet we're sort of guessing how you set this up. Assuming you added a checkbox from the Developers tab to the sheet then you can do what you're asking like this.
Private Sub Worksheet_Change(ByVal Target As Range)
' Only do this if the correct cell value has changed
If Target.Address <> "$E$11" Then
Exit Sub
End If
Dim targetValue As String
targetValue = Target.Value
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Sheets("Sheet1")
' Use the checkbox label here
' This is doing simple string comparison, may need to be more complex
sheet.CheckBoxes("Check Box 1").Visible = (targetValue = "True")
End Sub
Note that the active worksheet is the worksheet where a change was detected. So you have to reach into the other worksheet to get to the checkbox. Note also that you have to know what the name of that checkbox is to get this to work.
I find this behavior confusing myself as it only toggles if you make a change on another worksheet, it won't work if the first sheet is the one with the checkbox and making something appear and disappear is confusing. I might recommend that you just disable it (Enabled
) instead of hiding it.
You'll also need to replicate the logic when the sheet is shown (Activated
). At that point it might make more sense to just have the Activated
event check the condition and show/hide rather than reacting to a change event on another worksheet. Then it'll behave correctly irrelevant of which sheet is shown first.