VBA 操作(如果未选中)复选框



我想制作一个子,如果选中复选框则插入图片,如果未选中则将其删除,这就是我到目前为止所拥有的,第一部分(选中时插入(工作正常。有什么想法吗?

Dim chbx
Set chbx = ActiveSheet.CheckBoxes.Add(240, 15, 144, 15.75)
chbx.Characters.Text = "DisplacementPicturesIns"
chbx.OnAction = "DisplacementPicturesIns"
If chbx.Value = True Then
chbx.OnAction = True
Elseif chbx.Value = False Then
....
End If

我不知道您是否仍然需要这个,但这是我选择/取消选择复选框元素的解决方案。 您可以在 if 语句之间更改以执行任何您想要的操作:)

Sub SelectAll()
Dim chkbx As CheckBox
Dim cbv As Long
cbv = Sheets("Feuil1").CheckBoxes(Application.Caller).Value
If cbv = 1 Then
For Each chkbx In Sheets("Feuil1").CheckBoxes
chkbx.Value = xlOn
Next
Else
For Each chkbx In Sheets("Feuil1").CheckBoxes
chkbx.Value = xlOff
Next
End If
End Sub

就像笔记中指出的那样,您的代码没有多大意义。 选中/取消选中复选框后,OnAction保存要调用的方法的名称。 此外,您的条件仅在创建 Checkbox 控件后测试一次,仅此而已。如果您希望每次都测试您的条件,则必须将其放置在滴答/取消滴答事件中调用的子中。

我的建议:给复选框一个名字,然后在子里面引用它并检查它的值:

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

最新更新