Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA Excel, pętle dla comboboxów

26 Wrz 2016 10:39 1158 7
  • Poziom 6  
    Cześć,

    mam problem, chciałbym zastosować pętle dla kilkunastu comboboxów,których kolejne nazwy są zdefiniowane jako DEF. każdy combobox ma to samo źródło (rowsource). z tym że męczące jest klepanie tego samego 50razy..
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    czy da się zrobić pętlą?(szybciej)

    poza tym jak pętlą zrobić wprowadzanie tych danych z comboboxów do arkusza, żeby też skrócić pisanie kodu?
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    z góry dzięki za pomoc.
  • Specjalista - VBA, Excel
    1.
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Zamiast 4 If lepiej
    Select Case Left(c.Value, 2)
    Case "LK" : c.RowSource = "DEF_LIST!A2:A300"
    Case "MN": c.RowSource = "DEF_LIST!C2:C300"
    itd.
    End Selest
    2.
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 6  
    dzięki, ale rozumiem że
    For Each c in Me.Controls
    If c.Name Like "DEF*" Then
    If Left(c.Value, 2) = "LK" Then
    c.RowSource = "DEF_LIST!A2:A300"
    End If
    If Left(c.Value, 2) = "MN" Then
    'itd.

    End If
    Next

    musze wkleić po kolei do każdego z tych 50 , "DEF" ów, tak?
  • Specjalista - VBA, Excel
    Nie, do UserForm.
    For Each to znaczy "Dla kazdego"
  • Poziom 6  
    No właśnie.. jak wkleiłem to do
    Private Sub UserForm_Initialize()

    niestety po wpisaniu LK...nic nie wyskakuje.
  • Specjalista - VBA, Excel
    Masz racije. To prawdopodobnie trzeba klasu dla Combo
    i wszystkie 50 tworzyć programowo
  • Moderator Programowanie
    Przybysz89 napisał:
    No właśnie.. jak wkleiłem to do
    Private Sub UserForm_Initialize()
    A dlaczego do Initialize?

    Po mojemu najprościej będzie: jedna procedura z argumentem przekazywanym przez ComboBox. Wystarczy wkleić kod ComboBox'a 50x, zmieniając nazwę na kolejny Nr.
    W razie korekty, jest tylko jedna procedura do poprawienia.

    Taki szybki przykład w załączniku.
  • Poziom 6  
    w zasadzie zrobiłem tak że
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    wkleiłem do każdego DEF (czyli comboboxa) i działa.

    Najważniejsze:) dzięki za pomoc!