【问题标题】:excel vba check if command button and checkbox existsexcel vba检查命令按钮和复选框是否存在
【发布时间】:2014-06-28 21:59:03
【问题描述】:

我有一个使用复选框和命令按钮的脚本,并且有一个宏可以在每张纸上将它们重置为默认值。

'opt button reset
    For i = 1 To Worksheets.Count
Sheets(i).Shapes("Option Button 1").ControlFormat.Value = xlOn
    Next i

'cb reset
For i = 1 To Worksheets.Count
    Sheets(i).Shapes("CheckBox1").ControlFormat.Value = xlOff
Next i

问题是,如果工作表没有复选框或选择按钮,则脚本不起作用

我要做的是检查 cb 和 ob 是否存在并仅执行脚本。

提前致谢

【问题讨论】:

    标签: vba excel exists commandbutton


    【解决方案1】:

    您有几个选择。

    1. 最快的方式:On Error Resume Next

      On Error Resume Next
      For i = 1 To Worksheets.Count
        Sheets(i).Shapes("Option Button 1").ControlFormat.Value = xlOn   'opt button reset
        Sheets(i).Shapes("CheckBox1").ControlFormat.Value = xlOff   'cb reset
      Next i
      
    2. 遍历对象并匹配名称

      For i = 1 To Worksheets.Count
        For Each myControl In Sheets(i).Shapes
          If myControl.Name = "CheckBox1" Then
            myControl.Value = xlOff
          ElseIf myControl.Name = "Option Button 1" Then
            myControl.Value = xlOn
          End If
        Next myControl
      Next i
      

    【讨论】:

    • 第二个不起作用,我得到错误:对象不支持方法的这个属性。我发现第二个更漂亮:-)
    • 控件名称中实际上不能有空格。你能验证选择按钮的名称吗?
    • 它带有空格,并且正在使用第一个解决方案。现在我没有空格就做了,并且出现了同样的错误。会不会是因为我使用了 Workbook_BeforeSave 功能?
    • 好的,我发现了问题:myControl.ControlFormat.Value 是工作版本 :) 谢谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2015-06-11
    • 2017-04-22
    相关资源
    最近更新 更多