#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 здесь.