Excel VBA — Как вызвать командную кнопку для нескольких макросов при нажатии?

#vba #excel

#vba #excel

Вопрос:

Я пытаюсь запрограммировать командную кнопку в Excel VBA, которая может вызывать определенные макросы на основе строкового значения ячейки. Я думал, что могу просто использовать условные операторы «if», но в программе есть ошибка.

Например, пока у меня есть:

 Private Sub CommandButton1_Click()
    If Range("F3").Select = "Retirement Age" Then
        Call NewRA
    End If
End Sub
 

И я хочу, чтобы кнопка запускала макрос с именем «NewRA», когда ячейка F3 равна «Пенсионному возрасту». Как я могу написать соответствующий код для этого? Заранее спасибо.

Ответ №1:

Для начала я рекомендую использовать Range("F3").Value вместо Range("F3").Select .

Оттуда, если вы планируете подключить к этой кнопке более двух скриптов, я бы прочитал о Select Case конструкции. Вот ссылка на MSDN: http://msdn.microsoft.com/en-us/library/cy37t14y.aspx

Например:

 '... do your setup here

Select Case CStr(Range("F3").Value) '<~ convert whatever is in cell F3 to a String
    Case "Retirement Age"
        Call NewRA
    Case "Another String"
        Call AnotherStringScript
    Case "Another, Even Cooler String"
        Call AnotherEvenCoolerString
    '...
    Case Else
        Msgbox ("Hey! The value in this cell doesn't match a script!")
End Select
 

Ответ №2:

Вы можете использовать Range("F3").value , или Range("F3").value2 , или Range("F3").text , или даже без точки Range("F3") , но «никогда» не используйте .select или .activate (если нет другого выбора, что редко встречается в VBA)