Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Combobox abhängig füllen
#1
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


Angehängte Dateien Thumbnail(s)
   

.xlsx   Aufträge Muster 1.xlsx (Größe: 17,93 KB / Downloads: 15)
Antworten Top
#2
Hi,

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

da hatte ich mal was gebastelt...

anbei noch die Datei


.xls   daten.xls (Größe: 50 KB / Downloads: 16)
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#3
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.
Antworten Top
#4
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.
Antworten Top
#5
(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
Antworten Top
#6
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.
Antworten Top
#7
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Izzy
Antworten Top
#8
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.
Antworten Top
#9
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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#10
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste