2015-04-30 2 views
0

Я создал несколько макросов, которые генерируют ID. Теперь мне нужно поместить их в выпадающий список, который нужно выбрать.Назначить макрос в выпадающем списке и запустить с помощью кнопки

Идея состоит в том, что я вставлю кнопку (назовем ее GENERATE) и выпадающим списком 1 ячейку над кнопкой. По мере изменения значения в выпадающем списке кнопка GENERATE будет генерировать ID другой формулы. Вот мои коды, хотя я не уверен, что, если они правы ..

Sub GenerateID() 
Dim macroName As String 
macroName = Range("A4").Value 

If macroName = NRIC Then 
    Application.Run (GenerateNRICFIN) 
ElseIf macroName = FIN Then 
    Application.Run (GenerateFIN) 
ElseIf macroName = RB Then 
    Application.Run (GenerateRB) 
ElseIf macroName = RB2 Then 
    Application.Run (GenerateRB2) 
ElseIf macroName = RB3 Then 
    Application.Run (GenerateRB3) 
ElseIf macroName = RB4 Then 
    Application.Run (GenerateRB4) 
ElseIf macroName = RB5 Then 
    Application.Run (GenerateRB5) 
ElseIf macroName = RC Then 
    Application.Run (GenerateRC) 
ElseIf macroName = RC2 Then 
    Application.Run (GenerateRC2) 
ElseIf macroName = RC3 Then 
    Application.Run (GenerateRC3) 
ElseIf macroName = RC4 Then 
    Application.Run (GenerateRC4) 
ElseIf macroName = RC5 Then 
    Application.Run (GenerateRC5) 
ElseIf macroName = RC6 Then 
    Application.Run (GenerateRC6) 
End If 
End Sub 
+0

Добро пожаловать в Stackoverflow! Итак, ваш вопрос: как получить раскрывающийся список в ячейке вашей таблицы? Если да, поиграйте с функцией «Проверка данных» на вкладке «Данные». Запишите, что вы делаете с макрорекордером, чтобы впоследствии включить его в свой код. Другой вариант - добавить элемент 'ComboBox' (записи указаны в свойстве' RowSource'). – nhee

+0

-nhee У меня уже есть раскрывающийся список. Однако он не связывается с кнопкой GENERATE, которой я присваиваю этот макрос. –

+0

Хорошо. Я предполагаю, что вы недостаточно конкретны, когда ссылаетесь на ячейку в своем макросе, поскольку у вас нет определенной рабочей таблицы. Можете ли вы попробовать 'macroName = ThisWorkbook.Sheets (« Название листа »). Диапазон (« A4 »). – nhee

ответ

0

Используйте это:

Sub GenerateID() 
Dim macroName As String 
'macroName = Range("A4").Value 
macroName = ThisWorkbook.Sheets("Sheet1").Range("A4").Value 

IF (macroName = "NRIC") then macroName = "NRICFIN" 

Application.Run "Generate" & macroName 

END Sub 

Вместо всех if-заявления.

+0

Theres все еще ошибка, где ожидаются функции или переменные –

+0

@JunJie Я редактирую свой пост, Является ли ваш макрос таким? –

+0

теперь слово «Generate» считывается как макрос, появляется такая же ошибка 1004. –

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