Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1508to1512
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ComboBox einlesen

ComboBox einlesen
14.08.2016 15:08:56
Rainer
Hallo,
bekomme meine alte UserForm einfach nicht angepasst und denke, dass es besser ist, mal wieder Rat zu holen.
Im Grunde möchte ich wie beim Autofilter nacheinander Spalte B, C, D und dann E abfragen, dies aber über vier ComboBoxen.
Mit Click auf den Wert in ComboBox 4 soll die Information aus Spalte A in Tabelle 2 in eine Zelle eingetragen werden.
Die Abfrage für ComboBox1 habe ich, nun möchte ich in ComboBox2 nur noch die Werte analog AutoFilter für die Firma, welche in ComboBox1 ausgewählt wurde.
ComboBox3 und 4 entsprechend.
Gruß Rainer
Beispiel: https://www.herber.de/bbs/user/107610.xls

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox einlesen
14.08.2016 15:14:10
Hajo_Zi
Hallo Rainer,

prüfe beim einlesen ob Zeilenhöhe >0


AW: ComboBox einlesen
14.08.2016 15:17:22
Rainer
Hallo Hajo,
vielen Dank für die schnelle Antwort, bin allerdings etwas irritiert.
Ich benutze den Autofilter ja nicht und habe somit doch für alle Zeilen eine

Zeilenhöhe >0
.
Gruß Rainer
AW: ComboBox einlesen
14.08.2016 15:18:46
Rainer
vergaß das Häkchen für "noch offen"
AW: ComboBox einlesen
14.08.2016 15:19:21
Hajo_Zi
gut dann habe ich diesen Satz
Die Abfrage für ComboBox1 habe ich, nun möchte ich in ComboBox2 nur noch die Werte analog  _
AutoFilter für die Firma, welche in ComboBox1 ausgewählt wurde.
wohl falsch interpretiert. Ich kann Dir dann Leider nicht Helfen.
Gruß Hajo
Anzeige
AW: ComboBox einlesen
14.08.2016 15:35:20
Rainer
Hallo Hajo,
sorry, wenn ich mich falsch ausgedrückt hatte.
Analog Autofilter meinte ich, dass mit Auswahl von ComboBox1 dann nur noch Produkte der ausgewählten Firma in ComboBox2 eingetragen werden sollen.
So wie der Autofilter das in der Tabelle macht.
Ich teste das mal mit der Makroaufzeichnung, vielleicht komme ich dann weiter.
Gruß Rainer
AW: ComboBox einlesen
14.08.2016 16:09:20
Rainer
Hallo Hajo,
danke für den Link, da die Tabelle etwas anders aufgebaut ist habe ich nochmal eine weitere Variante getestet.
Bin mit ComboBox1 nun soweit, dass die Auswahl berücksichtigt wird, habe aber nun wieder doppelte Einträge.
Private Sub ComboBox1_Change()
Dim colList As New Collection
Dim rngCell As Range
Dim i As Integer
On Error Resume Next
For Each rngCell In Range("C7:C999")
Err.Clear
colList.Add rngCell.Value, CStr(rngCell.Value)
If Err.Number = 0 Then
For i = 7 To [B65536].End(xlUp).Row
If Cells(i, 2).Value = ComboBox1.Value Then
ComboBox2.AddItem Cells(i, 3) 'Füllen der ComboBox2
End If
Next
End If
Next rngCell
End Sub

https://www.herber.de/bbs/user/107611.xls
Anzeige
AW: ComboBox einlesen
17.08.2016 22:15:55
Piet
Hallo Rainer,
Makros googeln und zusammenbauen ist sicher In, hat aber auch so seine Tücken wenn man den Code nicht selbst verstehen und nachvollziehen kann. Ich habe mir erlaubt den Code für ComBoBox laden und UserForm Initialisieren neu zu schreiben. So wie ich ihn schreiben würde. Den Grund wirst du leicht erkennen. Schau dir mal das Original an und vergleiche:
Kritik am Original
Da sind zwei For Next Schleifen ineinander verschachtelt (sehr tückisch), Range("C7:C999") gefolgt von For i = 7 to LastCell
Hajo kann dir bestaetigen das Excel jeden Befehl wörtlich nimmt. Die 1. Schleife wird 999x durchlaufen und ruft somit wörtlich 999x die 2. Schleife auf. Wie voll soll die ComboBox denn werden? Die Bedingung stimmt 999x: Cells(i, 2).Value = ComboBox1
Dim colList As New Collection - colList.Add rngCell.Value, CStr(rngCell.Value)
Da verstehe ich schlicht und einfach im Augenblick garnichts. Vielleicht übersehe ich ja etwas.
Ich konnte nicht sehen das "colList" an anderer Stelle benutzt oder ausgewertet wird? Wozu dient es dann?
On Error Resume Next - hat den bösen Nachteil das ich nicht weiss ob es beim Add Laden Fehler gegeben hat.
Es erfolgt nirgendwo eine Meldung! Durch den Fehler, zuwenig Benzin geladen, sind schon Fluzeuge abgestürzt!
Private Sub ComboBox1_Change()
Dim colList As New Collection
Dim rngCell As Range
Dim i As Integer
On Error Resume Next
For Each rngCell In Range("C7:C999")
Err.Clear
colList.Add rngCell.Value, CStr(rngCell.Value)
If Err.Number = 0 Then
'ComboBox2.AddItem rngCell.Value 'Füllen der ComboBox
For i = 7 To [B65536].End(xlUp).Row
If Cells(i, 2).Value = ComboBox1.Value Then
ComboBox2.AddItem Cells(i, 3) 'Füllen der ComboBox
End If
Next
End If
Next rngCell
End Sub
**********************************************************
ich biete dir einmal meine Lösung an, vorbehaltlich das -colList New Collection- nicht gebraucht wird
Schau mal ob die ComBoBox 1+2 jetzt richtig befüllt werden. Was mit Combo 3 ist weiss ich nicht?
Was bei Übernehmen geschehen soll ist mir auch noch unklar. Prüfe doch erst mal diesen Teil.
(Ich habe den Eindruck da gibt es noch mehr was überarbeitet werden sollte?)
mfg Piet
'ComBoBox einlesen:     17.8.2016   Piet  für Herber Forum
Private Sub ComboBox1_Change()
Dim rngCell As Range, i As Integer
On Error GoTo Fehler
For Each rngCell In Range("C7", [c7].End(xlDown))
'ComboBox2.AddItem rngCell.Value 'Füllen der ComboBox
If rngCell.Offset(0, -1) = ComboBox1.Value Then
ComboBox2.AddItem rngCell.Value 'Füllen der ComboBox
End If
Next rngCell
Exit Sub
Fehler: MsgBox "Fehler bei:  ComboBox1_Change"
End Sub
Private Sub UserForm_Initialize()
Dim rngCell As Range
On Error GoTo Fehler
For Each rngCell In Range("B7", [b7].End(xlDown))
If rngCell  rngCell.Offset(-1, 0) Then
ComboBox1.AddItem rngCell.Value 'Füllen der ComboBox
End If
Next rngCell
Exit Sub
Fehler: MsgBox "Fehler bei:  UserForm_Initialize"
End Sub

Anzeige
AW: ComboBox einlesen
17.08.2016 23:57:29
Rainer
Hallo Piet,
vielen Dank für Deine konstruktive Kritik und ein viel größeres Dankeschön für Deinen Lösungsvorschlag, welcher optimal klappt.
Ich hatte von "Bernd" mal eine Programmierung, welche aber über Spalten ging bekommen und ja, ich habe mich dann versucht, ohne alles verstanden zu haben, das ganze in der Auswahl über Zeilen umzustellen. Deshalb auch die anderen UserFormen, welche ich im Netz gefunden habe.
Mein Ziel:
Nach der Auswahl in ComboBox2 sollen noch die verbleibenden Werte aus Spalte D in die ComboBox3 eingelesen werden, damit ich am Ende noch einen Wert anklicke, aus dem ich dann die ID aus Spalte A in ein anderes Tabellenblatt übernehmen möchte.
Letzter könnte dann ggf. auch eine ListBox sein, in welcher ich dann glaube ich auch restliche Infowerte (z. B. Spalte E und F) mit anzeigen könnte.
Letzlich ein AutoFilter über die UserForm.
Gruß
Rainer
Anzeige
AW: Offen stellen vergessen owT
17.08.2016 22:28:36
Piet
,,,
AW: Offen stellen vergessen owT
18.08.2016 00:10:43
Rainer
Hallo Piet,
just zur Info und ggf. zur Korrektur.
Dank Deines Codes habe ich das Befüllen der ComboBox3 so realiesiert.
Private Sub ComboBox2_Change()
Dim rngCell As Range, i As Integer
On Error GoTo Fehler
For Each rngCell In Range("D7", [d7].End(xlDown))
'ComboBox2.AddItem rngCell.Value 'Füllen der ComboBox
If rngCell.Offset(0, -2) = ComboBox1.Value And rngCell.Offset(0, -1) = ComboBox2.Value Then
ComboBox3.AddItem rngCell.Value 'Füllen der ComboBox
End If
Next rngCell
Exit Sub
Fehler: MsgBox "Fehler bei:  ComboBox2_Change"
End Sub
Kann ich über die ComboBox auch einen weiteren Infowert einstellen?
Gruß Rainer
Anzeige
AW: Offen stellen vergessen owT
18.08.2016 01:12:11
Piet
Hallo Rainer,
ich habe deinen Code mal geladen und sehe das "Konz" in ComboNox 3 erscheint. Bei A nur einmal. Gute Arbeit.
Was genau meinst du jetzt über ComboBox3 einen weiteren Infowert einstellen? Bei der Form "Auswahl" sehe ich kein weiteres Feld wo was übernommen werden kann. Kannst du mir das genauer erklaeren, und falls noch weitere Schritte folgen sollen, was willst du konkret erreichen. Ich habe mir die anderen Formen noch nicht angesehen. Weiss nicht wofür sie gut sind?
mfg Piet
AW: Offen stellen vergessen owT
18.08.2016 17:21:27
Rainer
Hallo Piet,
habe mal noch Beispielwerte ergänzt.
Aktuell ist ein Problem, dass ich in ComboBox2 nun noch doppelte Werte habe.
Zum Verständnis habe ich mal das "Value" von ComboBox3 ergänzt (siehe Grafik).
Mein Problem so, dass ich mit Auswahl des Wertes aus ComboBox3 nun nicht weis, wie ich die Info aus Zeile A zur Übernahme des gewünschten Produktes bestimmen kann.
Wähle ich also im Beispiel Konzept 1 aus, hätte ich gerne die Info aus A7 (#1) in ein Feld der Tabelle2 übernommen.
Die restlichen UserFormen habe ich entfernt, da ich diese nur zur Betrachtung der dort verwendeten Codes gespeichert hatte.
Gruß Rainer
Userbild
https://www.herber.de/bbs/user/107695.xls
Anzeige
AW: Offen stellen vergessen owT
18.08.2016 23:05:05
Rainer
Hallo,
habe mich nun für eine andere Variante entschieden und habe nun nur noch ein kleineres Problem.
Habe die ComboBoxen nacheinander gesperrt um doppelte Einträge zu verhindern.
Kicke ich nun auf den Button "neu" werden diese nicht wieder aktiviert.
Erst mit einem zweiten Click auf den Button "neu" funktionert es.
Wie kann ich das ändern?
Gruß Rainer
https://www.herber.de/bbs/user/107703.xls
AW: Offen stellen vergessen owT
19.08.2016 00:10:51
Piet
Hallo Rainer
ich habe zum Glück noch die geaenderte Version gesehen, soweit ich konnte überbearbeitet zurück.
Bei Neu Button habe ich den Befehl ComboBox1 löschen herausgenommen, sonst muss man die UserForm schliessen,
damit sie neu Initialisiert werden kann. Ulkigerweise muss man Buıtton Neu 2-3mal drücken bis es funktioniert.
Bei "Übernehmen" habe ich ein Makro eingefügt das im Modul2 liegt. Den Kopierbereich in Tabelle2 musst du ggf. anpassen.
Ich kopiere im Augenblick die ganze Zeile. Das Makro ist aber leicht auf andere Bereiche einstellbar.
mfg Piet
https://www.herber.de/bbs/user/107704.xls
Anzeige
AW: ComboBox einlesen
19.08.2016 10:28:23
Rainer
Hallo Piet,
vielen Dank für Deine Mühen.
Habe nun auch das Problem mit dem erforderlichen Doppelclick beim Button "Neu" geklärt.
Vermutlich liegt die Notwendigkeit daran, dass Excel hier die Änderung innerhalb des Codes der ComboBoxen als Aktivität sieht und somit die ComboBoxen sperrt.
Habe einfach den Befehl .Clear vorangestellt.
Private Sub CommandButton3_Click()
Me.ComboBox2.Clear
Me.ComboBox3.Clear
Me.ComboBox1.Enabled = True
Me.ComboBox1.ListIndex = -1
Me.ComboBox2.Enabled = True
Me.Label4 = "#"
Me.Label5 = "Grundlage"
Me.Label6 = "Partner"
Me.Label7 = "Stand:"
End Sub
Nun klappt es gleich beim ersten Mal.
Einen schönen Tag und schönes WE.
Rainer
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige