嗨,我对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。我觉得我可能误解了如何声明和设置变量,但我尝试过的任何东西都没有用。任何帮助表示赞赏。
答案 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