簡體   English   中英

在另一個組合框中選擇值時如何觸發一個組合框中的事件?

[英]How to trigger event in one ComboBox when value selected in another ComboBox?

我有一個組合框“選擇視圖”,其中包含(周,月,季度和全部)。 我想選擇第一個ComboBox時,例如:“ WEEK”,第二個ComboBox“選擇期間”將被填充,而沒有單擊按鈕“ W1,W2,.... W52”,或者如果我們選擇“ QUARTER”將填充“ Q1,Q2,Q3,Q4”等。

表格檢視

我嘗試了下面的代碼,但效果不佳。

Private Sub ComboBox4_Change()

Dim index As Integer

With Sheets("SUMMARY")
index = .ComboBox3.ListIndex
    .ComboBox4.Clear

    With .ComboBox4
        Select Case index
            Case Is = 0
                .AddItem "W1"
                .AddItem "W2"
                .AddItem "W3"
                .AddItem "W4"
                .AddItem "W5"
                .AddItem "W6"
                .AddItem "W7"
                .AddItem "W8"
                .AddItem "W9"
                .AddItem "W10"
                .AddItem "W11"
                .AddItem "W12"
                .AddItem "W13"
                .AddItem "W14"
                .AddItem "W15"
                .AddItem "W16"
                .AddItem "W17"
                .AddItem "W18"
                .AddItem "W19"
                .AddItem "W20"
                .AddItem "W21"
                .AddItem "W22"
                .AddItem "W23"
                .AddItem "W24"
                .AddItem "W25"
                .AddItem "W26"
                .AddItem "W27"
                .AddItem "W28"
                .AddItem "W29"
                .AddItem "W30"
                .AddItem "W31"
                .AddItem "W32"
                .AddItem "W33"
                .AddItem "W34"
                .AddItem "W35"
                .AddItem "W36"
                .AddItem "W37"
                .AddItem "W38"
                .AddItem "W39"
                .AddItem "W40"
                .AddItem "W41"
                .AddItem "W42"
                .AddItem "W43"
                .AddItem "W44"
                .AddItem "W45"
                .AddItem "W46"
                .AddItem "W47"
                .AddItem "W48"
                .AddItem "W49"
                .AddItem "W50"
                .AddItem "W51"
                .AddItem "W52"

            Case Is = 1
                .AddItem "JANUARY"
                .AddItem "FEBRUARY"
                .AddItem "MARCH"
                .AddItem "APRIL"
                .AddItem "MAY"
                .AddItem "JUNE"
                .AddItem "JULY"
                .AddItem "AUGUST"
                .AddItem "SEPTEMBER"
                .AddItem "OCTOBER"
                .AddItem "NOVEMBER"
                .AddItem "DECEMBER"

            Case Is = 2
                .AddItem "Q1"
                .AddItem "Q2"
                .AddItem "Q3"
                .AddItem "Q4"
            Case Is = 3
                .AddItem "ALL"
        End Select
    End With

End With

End Sub
  1. 我將其分為兩個功能,更易於維護。
  2. 您可以使用數組使代碼更小
  3. 我的代碼假定ComboBox3包含過濾器,而combo4是需要填充的內容。 我認為您可能在上面混合了這兩個。
Private Sub ComboBox3_Change()

    with thisworkbook.worksheets("Summary")
        call PopulateCombo4(.ComboBox3.value)
    end with

end sub
Private Sub PopulateCombo4(val as string)

    thisworkbook.worksheets("Summary").combobox4.clear

    dim arr() as string
    if val = "QUARTERLY" then
        arr = split("Q1,Q2,Q3,Q4")
    Elseif val = "WEEKLY" then
        '....[same as above with W1,W2....]
    end if            

    dim s as string
    for each s in arr
        thisworkbook.worksheets("Summary").combobox4.additem s
    next

end sub

讓我知道您是否有后續問題。 去開會。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM