Elseif не работает в Excel Makro (VBA)

#vba #excel

#vba #excel

Вопрос:

у меня небольшая проблема в моем макросе Excel.

Описание проблемы:

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

Выпадающее меню:

Австралийский

Австрия

Германия

И если один из них выберет, например, Germany -> Лист с Германией должен отображаться, а лист с Австралией и Австрией должен скрываться.

Я пытаюсь использовать команду ElseIf:

 Sub Choose_Country()

If (c2 = "Germany") Then

Sheet8.Visible = True
Sheet9.Visible = False
Sheet10.Visible = False

ElseIf (C2 = Australia) Then

Sheet8.Visible = False
Sheet9.Visible = True
Sheet10.Visible = False

ElseIf (C2 = Austria) Then

Sheet8.Visible = False
Sheet9.Visible = False
Sheet10.Visible = True

End if 
End sub
 

Ошибка в том, что не имеет значения, что я выбираю каждый раз, когда отображается таблица germany, а другие нет..

Есть идеи, в чем моя ошибка?

С уважением

Комментарии:

1. Почему бы не использовать Select Case c2 вместо всех этих If предложений? msdn.microsoft.com/en-us/library/cy37t14y.aspx

Ответ №1:

Я думаю, вы забыли немало «» Как сказал @Raph, выбрать регистр намного проще.

Совет: Всегда используйте Option Explicit, вы бы заметили это!!!

Совет 2. вы можете использовать lcase() для сравнения без учета регистра

 Sub Choose_Country()
c2 = something I dare hope :D
select case c2
case "Germany"

Sheet8.Visible = True
Sheet9.Visible = False
Sheet10.Visible = False

case "Australia"

Sheet8.Visible = False
Sheet9.Visible = True
Sheet10.Visible = False

case "Austria"

Sheet8.Visible = False
Sheet9.Visible = False
Sheet10.Visible = True
case else
      msgbox "unknown country"
End select
End sub
 

Комментарии:

1. Хотя это не ответ, я согласен, но я думаю, было бы хорошо, если бы вы привели пример того, как сделать select case

2. @Mr.Burns это тупой ответ, но я почти уверен, что проблемы связаны с «» . Я добавлю это 🙂

3. Существует много проблем с кодом, «» является лишь одной из (хотя я могу быть придирчивым), но ради того, чтобы помочь кому-то понять, как улучшить пример выбора, вероятно, значительно улучшится (мое первое использование выбора было беспорядочным)

4. @Pierre: Case "string" Работает ли и в VBA? Я всегда печатаю Case Is = "string"

5. @R3uK: np вот для чего это место. 🙂 Я только что узнал разницу между value и value2 здесь.