Как указано в примечаниях, ваш код не имеет особого смысла.OnAction
содержит имя метода, вызываемого после того, как флажок отмечен / снят.Кроме того, ваше состояние тестируется только один раз, после создания элемента управления Checkbox и все.если вы хотите, чтобы ваше состояние проверялось каждый раз, оно должно быть помещено в подпрограмму, которая вызывается в событии ticking / unticking.
Мое предложение: дайте флажку имя, а затем обратитесь к нему внутриsub и проверьте его значение:
Public Sub Example()
With ActiveSheet.CheckBoxes.Add(240, 15, 144, 15.75)
.Characters.Text = "DisplacementPicturesIns"
.Name = "myCheckBox"
.OnAction = "myCheckBox_Click"
End With
End Sub
Sub myCheckBox_Click()
Dim chbx
Set chbx = ActiveSheet.CheckBoxes("myCheckBox")
If chbx.Value = 1 Then
DisplacementPicturesIns
Else
'do other stuff
End If
End Sub