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

excel vba检查命令按钮和复选框是否存在,vba,excel,exists,commandbutton,Vba,Excel,Exists,Commandbutton,我有一个使用复选框和命令按钮的脚本,还有一个宏可以在每个工作表上将它们重置为默认值 '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").Control

我有一个使用复选框和命令按钮的脚本,还有一个宏可以在每个工作表上将它们重置为默认值

'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
问题是,如果有一个没有复选框或opt按钮的工作表,脚本将无法工作

我想做的是检查cb和ob是否存在,并只执行脚本


提前感谢

您有两种选择

  • 最快的方法:出错时继续下一步

    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
    

  • 你有两个选择

  • 最快的方法:出错时继续下一步

    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
    

  • 你有两个选择

  • 最快的方法:出错时继续下一步

    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
    

  • 你有两个选择

  • 最快的方法:出错时继续下一步

    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
    

  • 第二个不起作用,我得到一个错误:对象不支持方法的这个属性。我发现第二个fancyer:-)实际上,控件名中不能有空格。您能验证一下opt按钮的名称吗?它带有空格,并且正在使用第一个解决方案。现在我没有空格,同样的错误也出现了。是否可能是因为我使用了工作簿\u BeforeSave函数?好的,我发现了问题:
    myControl.ControlFormat.Value
    是工作版本:)谢谢您的帮助第二个不工作,我得到错误:对象不支持方法的此属性。我发现第二个fancyer:-)实际上,控件名中不能有空格。您能验证一下opt按钮的名称吗?它带有空格,并且正在使用第一个解决方案。现在我没有空格,同样的错误也出现了。是否可能是因为我使用了工作簿\u BeforeSave函数?好的,我发现了问题:
    myControl.ControlFormat.Value
    是工作版本:)谢谢您的帮助第二个不工作,我得到错误:对象不支持方法的此属性。我发现第二个fancyer:-)实际上,控件名中不能有空格。您能验证一下opt按钮的名称吗?它带有空格,并且正在使用第一个解决方案。现在我没有空格,同样的错误也出现了。是否可能是因为我使用了工作簿\u BeforeSave函数?好的,我发现了问题:
    myControl.ControlFormat.Value
    是工作版本:)谢谢您的帮助第二个不工作,我得到错误:对象不支持方法的此属性。我发现第二个fancyer:-)实际上,控件名中不能有空格。您能验证一下opt按钮的名称吗?它带有空格,并且正在使用第一个解决方案。现在我没有空格,同样的错误也出现了。是否可能是因为我使用了工作簿保存之前的功能?好的,我发现了问题:
    myControl.ControlFormat.Value
    是工作版本:)谢谢您的帮助