2015-08-07 3 views
0

Привет Я относительно новичок в excel vba, и у меня есть некоторые трудности. У меня есть книга с 3 листами. Первый лист содержит две кнопки и кнопку. Когда пользователь нажимает кнопку, я хочу написать сценарий VBA, который выберет соответствующий лист (лист 2 для кнопки 1, листы 3 для кнопки выбора 2), скопируйте его в новую книгу и предложите пользователю сохранить новую книгу , Мой код ниже:Использование кнопки Option для установки переменной в excel vba

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 Then Set SheetName = Sheet3Name. Когда я нависаю над строкой, он говорит OptionButton2 = Nothing, но Optionbutton1 = Empty. Я попытался изменить объявление переменной на:

Dim OptionButton1 As OptionButton 
Dim OptionButton2 As OptionButton 

, но затем оба OptionButtons = Nothing. Я чувствую, что я, вероятно, неправильно понимаю, как объявлять и устанавливать переменные, но ничто из того, что я пробовал, не сработало. Любая помощь приветствуется.

+0

Вы не назначаете фактические кнопки параметров своим переменным. Используете ли вы элементы управления Form или элементы ActiveX? –

+0

Я использую элементы управления формы – nickalbe

+0

'OptionButton1' si DIM-ed как вариант в вашем коде –

ответ

0

Вы можете объявить его как то:

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

Не возражаете, если я отредактирую свой ответ на ваш вопрос для получения полного ответа? –

+0

Нет проблем, продолжайте – mielk

0

Вы только использовать множество объектов, не примитивные типы, как строки и числа.

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

Я считаю, что свойство Value для кнопки типа типа формы - xlOn или xlOff, а не True или False. –

+0

Хороший звонок @ExcelDevelopers. Я должен был проверить перед публикацией. –

Смежные вопросы