![](/img/trans.png)
[英]How to access (check or uncheck) radio(option) button in active sheet by c# vsto addin
[英]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.