У меня есть выпадающий контроль в sheet1. Затем в листе 2 значения, такие как, «D2» значение 2010 года, «D3» значение 2020 года. Итак, теперь я хочу заполнить этот раскрывающийся список значениями 2010,2011,2012 ,,,, 2019,2020(в событии открытия рабочей книги). Как я могу добиться этого в VB Macro .. Может кто-нибудь помочь мне решить это? заранее спасибо

1 ответ1

0

Это заполнит ActiveX ComboBox всеми значениями между Sheet2!D2 и Sheet2!D3:

Sub PopulateComboBox()
    Dim l As Long
    Dim cb As ComboBox

    On Error GoTo Terminate

    Set cb = Sheet1.ComboBox1

    cb.Clear

    With Sheet2
        For l = .Range("D2").Value To .Range("D3").Value
            cb.AddItem l
        Next l
    End With

Terminate:
    If Err Then
        Debug.Print "Error", Err.Number, Err.Description
        Err.Clear
    End If
End Sub

Чтобы запустить, когда рабочая книга откроется, поместите это в модуль рабочей книги:

Private Sub Workbook_Open()
    Call PopulateComboBox
End Sub

Возможно, вы также захотите поместить это в модуль листа Sheet2, чтобы значения ComboBox обновлялись, если значения в D2 или D3 изменяются:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D2:D3")) Is Nothing Then Call PopulateComboBox
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .