VBA: если одно поле со списком изменено, сбросить другое поле со списком - PullRequest
0 голосов
/ 04 августа 2020

Я здесь в растерянности.

У меня есть два поля со списком activeX, которые сейчас находятся на листе в Excel: один для месяца и один для квартала. Месяцы включают все 12 месяцев плюс вариант «---», который соответствует тому, что в данный момент не выбран месяц. Я также использую символ «---» в поле со списком кварталов.

Моя проблема заключается в следующем:

Я хотел бы сделать так, чтобы, если пользователь выбирает месяц, другой чем "---", тогда четвертное поле будет сброшено обратно на "---". Точно так же, если пользователь выбирает квартал, поле со списком месяца должно быть сброшено на «---»

В настоящее время мой код выглядит следующим образом на листе, где находятся поля со списком (обратите внимание, что «shDashboard» это просто CodeName, которое я дал листу, а поля были названы Quarter_Combo и Month_Combo):

Private Sub Month_Combo_Change()
    MsgBox "Month_Combo"

    shDashboard.Quarter_Combo.Value = "—"

    
End Sub

Private Sub Quarter_Combo_Change()
    MsgBox "Quarter_Combo"

    shDashboard.Month_Combo.Value = shDashboard.Month_Combo.List(0)

End Sub

Окна сообщений просто существуют для меня, чтобы помочь в устранении неполадок в том, что происходит. По сути, всякий раз, когда я пытаюсь изменить месяц, он обновляет поле со списком кварталов, которое, в свою очередь, снова обновляет поле со списком месяца. В результате в обоих полях теперь будет отображаться "---"

Я пытался использовать Application.EnableEvents = False, но, похоже, это не сработало.

Мне здесь не хватает чего-то простого ... может кто-нибудь подскажет?

Заранее спасибо!

1 Ответ

1 голос
/ 04 августа 2020

Application.EnableEvents в этом случае не работает. Вот обходной путь

Private pbDisableComboEvents As Boolean

Private Sub Month_Combo_Change()
    If Not pbDisableComboEvents Then
        MsgBox "Month_Combo"
        pbDisableComboEvents = True
        Me.Quarter_Combo.Value = "-"
        pbDisableComboEvents = False
    End If
End Sub

Private Sub Quarter_Combo_Change()
    If Not pbDisableComboEvents Then
        MsgBox "Quarter_Combo"
        pbDisableComboEvents = True
        Me.Month_Combo.Value = "-"
        pbDisableComboEvents = False
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...