使用Option Button在excel vba

时间:2015-08-07 15:23:12

标签: excel vba excel-vba

嗨,我对excel vba相对较新,而且我遇到了一些困难。我有一张3张工作簿。第一张纸包含两个选项按钮和一个按钮。当用户单击按钮时,我想编写一个VBA脚本,该脚本将选择相应的工作表(选项按钮1的工作表2,选项按钮2的工作表3),将其复制到新工作簿并提示用户保存新工作簿。我的代码如下:

Dim SheetName As String
Dim OptionButton1, OptionButton2 As OptionButton

If OptionButton1 = True Then Set SheetName = Sheet2Name
If OptionButton2 = True Then Set SheetName = Sheet3Name

Sheets(SheetName).Copy
If MsgBox("Would you like to save the new workbook?", vbYesNo _
    + vbQuestion, "") = vbYes Then
    Application.Dialogs(xlDialogSaveAs).show
End If

我收到一个运行时错误,表示此行未设置对象变量:如果OptionButton2 = True则设置SheetName = Sheet3Name。当我将鼠标悬停在该行上时,它表示OptionButton2 = Nothing,但Optionbutton1 = Empty。我尝试将变量声明更改为:

Dim OptionButton1 As OptionButton
Dim OptionButton2 As OptionButton

然后两个OptionButtons = Nothing。我觉得我可能误解了如何声明和设置变量,但我尝试过的任何东西都没有用。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

您可以这样声明:

Dim OptionButton1 As OptionButton
Set OptionButton1 = Sheet2.Shapes("Option Button 1").DrawingObject

答案 1 :(得分:0)

您只对对象使用set,而不是字符串和数字等原始类型。

If OptionButton1.Value = xlOn Then 
    SheetName = "Sheet2Name"
ElseIf OptionButton2.Value = xlOn Then 
    SheetName = "Sheet3Name"
Else
    Exit Sub
End If