【问题标题】:vba action if checkbox is unchecked如果未选中复选框,则 vba 操作
【发布时间】:2022-02-17 22:32:07
【问题描述】:

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

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

【问题讨论】:

  • 您的代码没有意义,因为OnAction 必须包含过程的名称。

标签: excel vba


【解决方案1】:

我不知道你是否还需要这个,但这是我为选择/取消选择我的复选框元素所做的一个解决方案。 您可以在 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

【讨论】:

  • 嗯,谢谢,解决方案越多越好!
【解决方案2】:

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

我的建议:给复选框起个名字,然后在 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

【讨论】:

  • 是的,谢谢。这是有道理的!
猜你喜欢
  • 1970-01-01
  • 2019-08-19
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 2019-02-22
  • 2023-03-16
相关资源
最近更新 更多