#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)