繁体   English   中英

如何检查工作表上是否存在选项按钮?

[英]How to check if Option Button exists on sheet?

我有一个包含多张工作表的工作簿,我在其中使用不同脚本的选项按钮处于活动状态。

并非所有按钮都用于所有工作表。 它们写在一个子中,所以如果我不在工作表上使用选项按钮,除非我使用On Error Resume Next ,否则Set shp会给我一个错误,因为它找不到按钮。

我怎样才能摆脱On Error Resume Next 我想到了一些事情,例如检查选项按钮是否存在,并且仅当工作表上存在按钮时才使用Set shp但我无法使其工作。

Private Sub ob(opt As String)
    Dim shp1 As Shape
    Dim shp2 As Shape
    Dim shp3 As Shape
    Dim shp4 As Shape
    Dim shp5 As Shape

    On Error Resume Next ' <-I want to get rid of this
    Set shp1 = ActiveSheet.Shapes("OptionButton1")
    Set shp2 = ActiveSheet.Shapes("OptionButton2")
    Set shp3 = ActiveSheet.Shapes("OptionButton3")
    Set shp4 = ActiveSheet.Shapes("OptionButton4")
    Set shp5 = ActiveSheet.Shapes("OptionButton5")

    Select Case xlOn
        Case shp1.ControlFormat.Value
            opt = "ob1"
        Case shp2.ControlFormat.Value
            opt = "ob2"
        Case shp3.ControlFormat.Value
            opt = "ob3"
        Case shp4.ControlFormat.Value
            opt = "ob4"
        Case shp5.ControlFormat.Value
            opt = "ob5"
    End Select

End Sub

编辑:

在 Ralph 的版本之后,实际的脚本如下所示:

Private Sub ob(opt As String)
    Dim shp1 As Shape
    Dim shp2 As Shape
    Dim shp3 As Shape
    Dim shp4 As Shape
    Dim shp5 As Shape        

For Each ws In ActiveWorkbook.Worksheets
    For Each shp In Worksheets(ws.Name).Buttons
        Select Case btn.Name
            Case "OptionButton1"
                Set shp1 = ActiveSheet.Shapes("OptionButton1")
            Case "OptionButton2"
                Set shp2 = ActiveSheet.Shapes("OptionButton2")
            Case "OptionButton3"
                Set shp3 = ActiveSheet.Shapes("OptionButton3")
            Case "OptionButton4"
                Set shp4 = ActiveSheet.Shapes("OptionButton4")
            Case "OptionButton5"
                Set shp5 = ActiveSheet.Shapes("OptionButton5")
        End Select
    Next shp
Next ws

Select Case xlOn
    Case shp1.ControlFormat.Value
        opt = "ob1"
    Case shp2.ControlFormat.Value
        opt = "ob2"
    Case shp3.ControlFormat.Value
        opt = "ob3"
    Case shp4.ControlFormat.Value
        opt = "ob4"
    Case shp5.ControlFormat.Value
        opt = "ob5"
End Select

End Sub

我在线收到对象所需的错误:

Select Case btn.Name

我会建议这种方法。 希望能帮助到你:

Public Sub AllShapesOnAllSheets()
For Each btn In ActiveSheet.OptionButtons
Select Case btn.Name
    Case "OptionButton1"
        If btn.Value = xlOn Then opt = "ob1"
    Case "OptionButton2"
        If btn.Value = xlOn Then opt = "ob2"
    Case "OptionButton3"
        If btn.Value = xlOn Then opt = "ob3"
    Case "OptionButton4"
        If btn.Value = xlOn Then opt = "ob4"
    Case "OptionButton5"
        If btn.Value = xlOn Then opt = "ob5"
End Select
Next btn
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM