Clever-Excel-Forum

Normale Version: VBA Combobox abhängig füllen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

Wie kann ich eine Combobox abhängig füllen?

Ziel:
Combobox 1 wähle ich die Firma aus.
Combobox 2 soll die Vertragsnummern dieser Firma (unter Verträge zuvor eingegeben) aufführen.
Aber nur diese Vertragsnummern, wo in Verträge unter G (geladen) kein x steht, also alle offenen Verträge.

Mit dem folgenden Code fülle ich die Combobox2 mit sämtlichen Vertragsnummern. Da wird also weder die Frima noch obs bereits geladen/geplant ist berücksichtig.
Code:
Private Sub ComboBox2_DropButtonClick()
ComboBox2.RowSource = "Verträge!$B$2:" & _
       Worksheets("Verträge").Cells(Worksheets("Verträge").Rows.Count, 2).End(xlUp).Address
End Sub

Nach der Auswahl in Combobox2 (Vertragnummer) sollen natürlich auch Textbox 2 und 3 (Artikel und Menge) dementsprechend gefüllt werden.

Das ganze befüllt am Ende dann eine neue Zeile in Ladungen und macht entsprechend ein x in Verträge.

Vielleicht könnt ihr mir auch bei dem X für Verträge helfen.
Bisslang weiß ich, wie ich in die nächste freie Zeile schreibe oder in eine bestimmte Zeile.
Aber ich weiß nicht, wie ich abhängig von der Vertragsnummer das x dann in die richtige Zeile schreibe.

Anhänge:
1. Beispieldatei ohne Makros
2. Bild von der Userform
Hi,

http://www.ms-office-forum.net/forum/showpost.php?p=1355482&postcount=6

da hatte ich mal was gebastelt...

anbei noch die Datei

[attachment=13902]
danke für die Antwort.
Soweit ist meine VBA Kenntniss noch nicht, dass ich deinen Code auseinander fizzeln kann.
Hätte vielleicht dazu schreiben sollen, das ich VBA Anfängerin bin.
Code:
Private Sub ComboBox1_Change()
  Dim lZeile As Long

    If ComboBox1.ListIndex >= 0 Then
   
        lZeile = 2
        Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
       
            If ComboBox1.Text = Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) Then
           
               
                ComboBox2 = Tabelle2.Cells(lZeile, 2).Value
           Exit Do
           
            End If
       
      lZeile = lZeile + 1
       
        Loop
       
    End If
   
End Sub

Das habe ich gefunden, das füllt mir die Combobox aber nur mit der ersten gefundenen Vertragsnummer, und nicht mit allen vorhandenen.
(19.10.2017, 10:37)Izzy schrieb: [ -> ]Das habe ich gefunden, das füllt mir die Combobox aber nur mit der ersten gefundenen Vertragsnummer, und nicht mit allen vorhandenen.

entferne Exit Do

Gruß Uwe
Danke für deine Antwort.
Wirft mir trotzdem nur einen Wert aus.

Teste es mit 3 Werten
Frima 1  Vertragsnummer 1 + 2
Firma 2 Vertragsnummer 3

Der unterschied ist jetzt nur, das er statt nur die erste vertragsnummer, nun nur die Zweite Vertragsnummer auswirft.
Hallo,

aber so vielleicht:
Private Sub ComboBox1_Change()
Dim lZeile As Long

If ComboBox1.ListIndex >= 0 Then
lZeile = 2
Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
If ComboBox1.Text = Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) Then
ComboBox2.AddItem Tabelle2.Cells(lZeile, 2).Value
End If
lZeile = lZeile + 1
Loop
End If
End Sub
Gruß Uwe
Supi danke, so funktioniert es erstmal.


Jetzt muss ich nurnoch gucken, wenn in tabelle2 in spalte 7 ein x steht, soll er mir die vertragsnummer nicht anzeigen.

und danach, wie ich ein x beim endsprechenden Vertrag speicher



Ich habe leider erst im Januar einen Wochenend VBA Kurs.
Hallo,

Zitat:Ich habe leider erst im Januar einen Wochenend VBA Kurs.

Dann sei mal anschließend, nach dem Kurs, nicht allzu entäuscht.

Du wirst schneller, besser, einfacher, punktbezogener und auch wesentlich mehr lernen
können, wenn Du in einem Forum (vorzugsweise natürlich hier) aktiv mitarbeitest.
Code:
Dim lZeile As Long
    If ComboBox2.ListIndex = -1 Then Exit Sub
    lZeile = 2
    Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) <> ""
        If ComboBox2.Text = Trim(CStr(Tabelle2.Cells(lZeile, 2).Value)) Then
            Tabelle2.Cells(lZeile, 7).Value = Trim(CStr(TextBox5.Text))
      Exit Do
        End If
        lZeile = lZeile + 1
    Loop

Das x in die entsprechende Zeile unter Verträgen schreiben klappt.
Habe mir dafür eine Hilfs Textbox gemacht, die ist direkt beim start der UserForm gespeert und ein X drin.


Code:
Private Sub UserForm_Initialize()
TextBox5.Text = "x"
TextBox5.Locked = True
End Sub
Seiten: 1 2