excel vba检查命令按钮和复选框是不是存在

Posted

技术标签:

【中文标题】excel vba检查命令按钮和复选框是不是存在【英文标题】: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 是否存在并仅执行脚本。

提前致谢

【问题讨论】:

【参考方案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
    

    遍历对象并匹配名称

    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 是工作版本 :) 谢谢你的帮助

以上是关于excel vba检查命令按钮和复选框是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

从 Excel VBA-检查访问表是不是存在/如果不存在,则创建/复制

如何将代码模块中包含的VBA代码放在表单模块中

Swift - 处理表格视图多个部分的自定义复选标记按钮状态

Excel VBA检查各种组合框中是不是存在值,然后添加相应的文本框值

用VBA重置excel控件值的方法。

Excel VBA入门用户窗体开发