Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
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

Listbox in UF unter Bedingungen füllen

Listbox in UF unter Bedingungen füllen
04.02.2019 07:06:45
Eva
Hallo Zusammen ,
ich habe in einem Arbeitsblatt mit mehreren Tabellen eine bestimmte Tabelle mit 87 Spalten und möchte in einer Userform über die Auswahl in eine Combobox betroffene Zeilen in einer Listbox anzeigen lassen, aber natürlich nicht die Werte von alle 87 Spalten sondern nur die Werte von 12 bestimmten Spalten in Abhängigkeit der Auswahl in der Combobox.
Folgende Abfrage soll stattfinde bzw. wird in der Auswahl der Combobox stehen:
1. Alle Zeilen die in Spalte 1 gefüllt und in Spalte 84 leer sind
2. Alle Zeilen die in Spalte 1 gefüllt und in Spalte 12 gefüllt aber Splate 19 leer und oder in Spalte 20 gefüllt und Spalte 27 leer und oder Spalte 28 gefüllt und Spalte 35 leer usw. (noch 6 weitere gleich Abfragen…)
Mit meinen bisherigen Codes bin ich leider kläglich gescheitert.
Ist es möglich durch Anklicken einer bestimmten Zeile in der Listbox anschließend eine Userform zu öffnen und den 1.Wert der Zeile in der Listbox in der neuen Userform in eine Textbox zu übertragen?
Grüße
Eva

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox in UF unter Bedingungen füllen
04.02.2019 13:13:07
Piet
Hallo Eva
ich kann dir nicht den ganzen Code schreiben, der scheint sehr komplex zu sein, zeige dir aber ein interessantes Auswahl Verfahren über die Variable Flag = "Ja". Da können endlos viele Bedingungen in Einzelschritten ausgewertet werden, die du überschauen kannst! Alles in eine IF Zeile zu packen ist zu kompliziert!
Im Flag System kannst du auch Vorrang Auswahlen treffen, indem zuerst eine oder mehrere Zellen auf "" oder Werte stehen müssen, und erst dann andere Spalten ausgewertet werden. Verschachtelte IF Then Anweisungen, die du logisch nachvollziehen kannst.
Der Code zum Laden der ListBox steht dann an Ende, wenn das Flag auf "Ja" steht. Du kannst auch am Schluss ein auf Ja stehendes Flag wieder löschen, wenn eine weitere Auswertung Vorrang hat und seine Löschung verlangt!! Dieses Auswahl Verfahren kann man in eine For Next Schleife einbauen, denn im Code steht Cells(z,1) für z=Zeile XXX in einer For Next Schleife!!
mfg Piet
Sub Flag_Auswahl()
'komplexe Spaltenauswahl von mehreren Spalten über "Flag = Ja"
Flg = Empty   'Flag löschen, auf "Ja" wenn Bedingung erfüllt ist
If Calls(z, 1)  "" And Cells(z, 84) = "" Then Flg = "Ja"
'Spalte 19 muss Leer sein, dann Auswahl prüfen!!
If Calls(z, 19) = "" And Calls(z, 27) = "" Then
If Calls(z, 1)  "" And Cells(z, 12)  "" Then Flg = "Ja"
End If
If Flg = "Ja" Then
'hier dein Code zum ListBox laden
End If
End Sub

Anzeige
AW: Listbox in UF unter Bedingungen füllen
04.02.2019 14:02:28
Eva
Hallo Piet,
Vielen Dank erst mal für deine Antwort!
So ganz habe ich das aber noch nicht verstanden. Die Abfragen sind mir zwar halbwegs klar, aber wie ich den Bezug zum Eintrag in der Combobox herstelle und auf welches Tabellenblatt ich überhaupt zugreife ist mir unklar. Wenn ich es richtig verstehe muss ich den Code ja in meine Userform schreiben in der sich die Listbox und die Combobox befinden, aber damit er auch auf dem richtigen Tabellenblatt ausgeführt wird muss dies doch irgendwo stehen oder?
Grüße
Eva
AW: Listbox in UF unter Bedingungen füllen
05.02.2019 01:16:26
Piet
Hallo Eva
kannst du bitte eine Beispieldatei mit 10 anonymen Daten hochladen und mir eine Lösung von Hand vorgeben.
Bitte auch mit den bisherigen Makros, damit ich sehen kann was du schon erarbeitet hast.
mfg Piet
Anzeige
AW: Listbox in UF unter Bedingungen füllen
05.02.2019 07:58:51
Eva
Hallo Piet,
anbei eine Testdatei auf die die Schnelle. Bei Öffnen der Userform habe ich die Auswahl zwischen:
Offene Rechnung & noch keine Rechnung gestellt.
Bei der Auswahl offene Rechnung sollen in der Listbox alle Kunden angezeigt werden bei denen eine Rechung gestellt wurde, diese aber noch nicht bezahlt ist z.B. Spalte C gefüllt aber Spalte E leer, usw.
Bei der Auswahl noch keine Rechnung gestellt sollen in der Listbox alle Kunden angezeigt werden, bei denen in Spalte O kein betrag steht (Aufsummierung aller Rechnungsbeträge)
In meine richtigen Datei gibt es noch eine Userform zur Eingabe/Bearbeitung von Kunden und eine zur Eingabe/ Bearbeitung der Rechnungen, sowie eine Tabelle mit den Kunden und Adressen und eine Tabelle mit den fortlaufenden aufgelisteten Rechnungen. Die Makros darf ich leider nicht hochladen.
https://www.herber.de/bbs/user/127424.xlsm
Grüße Eva
Anzeige
AW: Listbox in UF unter Bedingungen füllen
05.02.2019 22:29:08
Piet
Hallo Eva
anbei deine kleine Beispieldatei mit funktionierendem Makro zurück. Ob du es in Modul1 laesst, oder in die UserForm für ComboBox übertraegst bleibt dir überlassen. Die Einstellungen der Spaltenbreite für die ListBox musst du im Makro noch selbst anpassen.
Sollte der Thread damit beendet sein schliesse ihn bitte, Hacken offen lassen. Viel Spass beim Testen ...
mfg Piet
https://www.herber.de/bbs/user/127444.xlsm
AW: Listbox in UF unter Bedingungen füllen
06.02.2019 12:37:11
Eva
Hallo Piet,
danke für dein Beispiel. Die erste Auswahl in der Combbox klappt wunderbar ("keine Rechung gestellt").
Die zweite Auswahl ("offene Rechnungen") leider nicht.
folgenden Code habe ich eingegeben in der Kommentierung so wie ich Ihn verstehe:
lz1 = .Cells(Rows.Count, 1).End(xlUp).Row 'suche erste Zeile von Unten in Spalte 1 mit Wert
lSpa = .Cells(1, Columns.Count).End(xlToLeft).Column 'suche erste Spalte von Links mit Wert,
For j = 3 To lz1 'ab Zeile 3 bis zur letzten gefuellten Zeile
For s = 12 To lSpa Step 8 's=Spalte 12 bis letzte Spalte in 8er-Spr?ngen
If .Cells(j, s + 7) "" Then 'wenn die siebte Spalte nach s leer ist dann Listbox fuellen mit
UF.AddItem
UF.List(n, 0) = .Cells(j, 1) 'Kundennummer
UF.List(n, 1) = .Cells(j, 2) 'Name
UF.List(n, 2) = .Cells(j, s) 'Rechung
UF.List(n, 3) = .Cells(j, s + 1) 'Betrag
n = n + 1
End If
Next s
Next j
End With
Jetzt ist es so dass in meiner Datei die erste gefüllte Spalte von links die Spalte 96 ("CR") ist, der Suchbereich für s aber nur von Spalte 12 bis Spalte 83 geht. Ich denke mal das es damit zusammen hängt, dass keine Werte in der Listbox ausgegeben werden.
In deinem Beispiel klappt es dagegen. Wie müsste ich denn den Code anpassen?
Beste Grüße
Eva
Anzeige
AW: Listbox in UF unter Bedingungen füllen
06.02.2019 14:18:32
Piet
Hallo Eva
ich freue mich das mein Beispiel laeuft! Hier musst du den Code auf deine Wünsche aendern:
Die letzte Spalte wird gesucht, aber welche Zeile ist die richtige? Cells steht jetzt auf Zeile 1, ggf. aendern!
lSpa = .Cells(1, Columns.Count).End(xlToLeft).Column 'suche erste Spalte von Rechts nach Links mit Wert.
For s = 96 To lSpa Step 8 's=Spalte 96 bis letzte Spalte in 8er-Sprüngen
So sollte es klappen, probiere es bitte aus. Viel Erfolg ....
mfg Piet

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige