Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Listbox aus Tabellenblatt füllen

Listbox aus Tabellenblatt füllen
14.10.2021 20:34:18
Thomas
Hallo,
ich möchte in einer Listbox Daten mit 12 Spalten anzeigen, die sich aus einer Tabelle füllen, wobei der Wert einer Variablen geprüft werden soll und dann nur die Zeilen angezeigt werden die dem Wert der Variablen entsprechen (Spalte A, Wert der Variablen kommt mehrfach in Spalte A vor) angezeigt werden. Wie kann ich das machen?
Hab schon viel gegooglet aber leider ohne Lösung.....
Danke
Anzeige

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox aus Tabellenblatt füllen
14.10.2021 20:37:23
Hajo_Zi
For LoI=1 To LoLetzte
if Cells(LoI,1)"="Test" then
Lst_Listr.additem Cells(loi,1)
End if
Next LoI
GrußformelHomepage
Anzeige
AW: Listbox aus Tabellenblatt füllen
14.10.2021 21:00:10
Thomas
Wahrscheinlich stelle ich mich wieder blöd an, aber wenn ich deinen "lachenden"Code verstehe müsste es bei mir so aussehen, aber das führt zu einem fehler "typen unverträglich"
txtWawiUmsatZDetails das ist meine Variable die geprüft werden soll und UmsWawiULiefAbtei mein Tabellenblatt, wo Spalte AS geprüft werden soll auf die Variable
Dim LiefUm As Worksheet
Dim lastRow As Long
Set LiefUm = "UmsWawiULiefAbtei"
For LiefUm = 1 To lastRow
If Cells(LiefUm, 1) = txtWawiUmsatZDetails.Value Then
libUmsatzjeMarkt.AddItem Cells(LiefUm, 1)
End If
Next LiefUm
Anzeige
AW: Listbox aus Tabellenblatt füllen
14.10.2021 21:02:43
Thomas
Sorry,
habe grad gesehen das beim Kopieren was schiefgelaufen ist, sieht bei mir jetzt so aus

Dim LiefUm As String
Dim lastRow As Long
Set LiefUm = "UmsWawiULiefAbtei"
For LiefUm = 1 To lastRow
If Cells(LiefUm, 1) = txtWawiUmsatZDetails.Value Then
libUmsatzjeMarkt.AddItem Cells(LiefUm, 1)
End If
Next LiefUm

Anzeige
AW: Listbox aus Tabellenblatt füllen
14.10.2021 21:25:13
Thomas
Ich hab es jetzt so versucht,

Dim C As Long
libUmsatzjeMarkt.ColumnHeads = True
libUmsatzjeMarkt.RowSource = "UmsWawiULiefAbtei!A1:G1"
libUmsatzjeMarkt.ColumnCount = 12
For C = 1 To 5000
libUmsatzjeMarkt.AddItem UmsWawiULiefAbtei.Cells(C, 1).Value
libUmsatzjeMarkt.AddItem UmsWawiULiefAbtei.Cells(C, 2).Value
libUmsatzjeMarkt.AddItem UmsWawiULiefAbtei.Cells(C, 3).Value
Next C
allerdings bekomme ich dann die Meldung "Variable nicht definiert"UmsWawiULiefAbtei
Das ist aber keine Variable sondern ein Tabellenblatt....
Anzeige
AW: Listbox aus Tabellenblatt füllen
15.10.2021 05:36:43
Hajo_Zi
der internne Name der Tabbele ist nicht "libUmsatzjeMarkt", ich vermute es ist der Name der im Register steht?
Es fehlt Worksheets ("libUmsatzjeMarkt")
Gruß Hajo
AW: Listbox aus Tabellenblatt füllen
15.10.2021 08:26:23
Thomas
Hallo Hajo, danke für deine Antwort, ich bin jetzt nochmal zurück zu deiner ersten Antwort gegangen, da ich festgestellt habe das ich mit RowSource nicht weiter komme, da mir dann alles in das listenfeld eingelesen wird und nicht gefiltert wird, was ich aber brauche.
Hab jetzt auf Basis deiner ersten Antwort nochmal das hier gebaut, was mir allerdings wieder einen Fehler aufwirft.

Dim LiefUm As Worksheet
Dim lastRow As Long
Set LiefUm = Worksheets("UmsWawiULiefAbtei")
For LiefUm = 1 To lastRow
If Cells(LiefUm, 3) = txtWawiUmsatZDetails.Value Then
libUmsatzjeMarkt.AddItem Cells(LiefUm, 1)
End If
Next LiefUm
In txtWawiUmsatZDetails wird ein Wert gespeichert der an andere stelle erfasst wird, wenn dieser Wert in Spalte 3 (der Wert kann öffters in Spalte 3 vorkommen) der Tabelle Worksheets("UmsWawiULiefAbtei") gefunden wird, sollen nur diese Zeile in der Listbox eingelesen werden.
Aber irgendwo hab ich da einen Fehler drin.....
Danke für die Hilfe
Anzeige
AW: Listbox aus Tabellenblatt füllen
14.10.2021 21:29:25
ralf_b

Dim LiefUm As String
Dim lastRow As Long
Set LiefUm = "UmsWawiULiefAbtei"
For LiefUm = 1 To lastRow   'wo erhält die Variable lastRow seinen Wert?
If Cells(LiefUm, 1) = txtWawiUmsatZDetails.Value Then   ' oder doch lieber  Cells(LiefUm, "AS")   war es denn Spalte A oder AS  ?
libUmsatzjeMarkt.AddItem Cells(LiefUm, 1)
End If
Next LiefUm

Anzeige
AW: Listbox aus Tabellenblatt füllen
14.10.2021 21:41:56
Thomas
Hi,
bekomme ich warum auch immer ein

Objekt erforerlich
an dieser stelle Set LiefUm = "UmsWawiULiefAbtei"
So bekomme ich den komplette Inhalt angezeigt, was jetzt nur nich auf die Variable txtWawiUmsatZDetails geprüft werden müsste
AW: Listbox aus Tabellenblatt füllen
15.10.2021 07:49:54
ralf_b
Set LiefUm = "UmsWawiULiefAbtei" 'das Set weg LiefUm ist ein String und kein Objekt
In Folge ist das hier aber falsch, da Lifum ein Text ist. Eine Zählvariable sollte doch eher ein Typ Long oder Integer sein.
For LiefUm = 1 To lastRow
Anzeige
AW: Listbox aus Tabellenblatt füllen
15.10.2021 08:32:39
Thomas
Hallo,
also eher so? Dann bekomme ich zwar keinen Fehler, aber die listbox wird auch nicht gefüllt
Dim LiefUm As Long
Dim lastRow As Long
ThisWorkbook.Worksheets("UmsWawiULiefAbtei").Activate
For LiefUm = 1 To lastRow
If Cells(LiefUm, 3) = txtWawiUmsatZDetails.Value Then
libUmsatzjeMarkt.AddItem Cells(LiefUm, 1)
End If
Next LiefUm
Anzeige
AW: Listbox aus Tabellenblatt füllen
15.10.2021 08:54:52
Werner
Hallo,
sorry, ich will dir da jetzt wirklich nicht zu nahe treten. Aber wenn ich deine seitherigen Codeversuche sehe, dann sind deine Kenntnisse doch sehr bescheiden.
Ohne deine Datei zu kennen würde ich mal sagen, dass das so hier nichts wird.
Also bitte deine Datei (Daten ggf. anonymisierten) hier hochladen.
Nur mal so viel vorne weg: Im Eingangsbeitrag schreibst du, dass du die Listbox 12 Spalten haben soll. Da ist dann das Füllen der Listbox mit AddItem nicht möglich. Mit AddItem kann man maximal eine 10-spaltige Listbox füllen.
Hat/soll die Listbox mehr als 10 Spalten haben, dann ist die Zuweisung nur als ganzer Bereich möglich über die .List Eigenschaft deiner Listbox.
Also bitte mal deine Datei hochladen.
Gruß Werner
Anzeige
AW: Listbox aus Tabellenblatt füllen
15.10.2021 10:02:24
Thomas
Hi,
kein Problem, das ich an der stelle noch einige Defizite hab ist mir leider bekannt...
Anbei mal eine Beispieldate, die ein Tabellenblatt enthält mit den 12 Spalten, in der UserForm hab ich nochmal erklärt was passieren soll, in Spalte C in dem Tabellenblatt stehen werte, diese sollen mit einem Variablenwert abgegelichen werden und wenn diese übereinstimmen sollen alle Zeilen wo in Spalte c der Wert übereinstimmt in der Listbox angezeigt werden.
Danke für die Hilfe
https://www.herber.de/bbs/user/148626.xlsm
Anzeige
AW: Listbox aus Tabellenblatt füllen
15.10.2021 11:49:31
Werner
Hallo,
stellt sich jetzt auch noch die Frage, was du mit den Daten in der Listbox dann noch vor hast.
Willst du die ggf. dann auswählen, in Textboxen übertragen um sie dort z.B. zu ändern und dann wieder in die Tabelle zurück schreiben?
Weil wenn ja, dann würde ich auch noch in eine zusätzliche Spalte der Listbox (die man dann ausblenden kann) die jeweilige Zeilennummer mit aufnehmen. Damit kann man die Daten dann auch problemlos wieder in die Ursprungstabelle zurückschreiben.
Das Ganze würde ich über den Autofilter realisierten. Sprich die Tabelle Spalte C nach dem "Suchbegriff" filtern, das Fiterergebnis in ein separates Tabellenblatt kopieren und von dort dann die kompletten Daten der Listbox zuweisen.
Wird bei mir aber erst wieder heute Abend was. Habe vorher keine Zeit mehr dazu.
Beantworte mal die Frage. Vielleicht schaut ja in der Zwischenzeit auch wer anders drüber. Ansonsten dann irgendwann heute Abend.
Gruß Werner
Anzeige
AW: Listbox aus Tabellenblatt füllen
15.10.2021 19:57:42
Thomas
Hi,
nein die Daten sollen nur angezeigt werden, mehr nicht. Das mit dem Autofilter und kopieren hatte ich auch überlegt, dann würde es ja auch über RowSource funktionieren oder? Aber was ist die bessere Variante?
AW: Listbox aus Tabellenblatt füllen
15.10.2021 21:21:25
Thomas
Ich hab es jetzt auch mal mit rowsource und copy versucht, sieht jetzt so aus

txtWawiUmsatZDetails = txtWAWI.Value
ThisWorkbook.Worksheets("UmsWawiULiefAbtei").Activate
ActiveSheet.UsedRange.AutoFilter
ActiveSheet.UsedRange.AutoFilter 3, txtWawiUmsatZDetails
ActiveSheet.UsedRange.Copy
ActiveWorkbook.Worksheets.Add
ActiveSheet.Name = txtWawiUmsatZDetails
ActiveSheet.Paste
libUmsatzjeMarkt.ColumnHeads = True
libUmsatzjeMarkt.ColumnCount = 12
libUmsatzjeMarkt.RowSource = ActiveSheet.Name & "!A2:L" & ActiveSheet.Range("A65536").End(xlUp).Row
Damit werden die Daten gefiltert in der Listbox angezeigt, allerdings wenn ich dann denn Wert in txtWAWI.Value ändere welcher dann txtWawiUmsatZDetails füllt, wird die Variable nicht gefüllt und es kommt zu einem Fehler..... Wenn ich denn Code auskommentiere wird txtWAWI.Value korekt aktualisiert....
Woran kann das liegen? Was dann auch ncoh als Problem kommt, ich würde das erzeugte neue Tabellenblatt beim Schließen der Mappe gerne wieder löschen (könnten ggf. ja dann auch mehrere erzeugte Blätter sein) und wenn vor dem Schließen die Nummer nochmal aufgerufen wird, sollten einfach nur die Daten angezeigt werden, jetzt bekomme ich einen Fehler, da natürlich wieder versucht wird das Arbeitsblatt anzulegen.
Danke
Anzeige
AW: Listbox aus Tabellenblatt füllen
15.10.2021 21:32:18
Thomas
Ok, das Problem mit der aktualisierung der Variablen hab ich gelöst, bleiben nur noch die anderen beiden, wo mir grade die idee fehlt, aber vieleicht hilft das drüber schlafen, werds mir morgen nochmal ansehen.
AW: Listbox aus Tabellenblatt füllen
15.10.2021 22:14:35
Werner
Hallo,
und warum willst du das Tabellenblatt jedesmal neu erstellen und dann wieder löschen?
Einmal das Tabellenblatt anlegen und anschließend ausblenden.
Hier jetzt mal der Code angepasst auf deine Beispielmappe. Ein Tabellenblatt anlegen und in "Hilfstabelle" umbennenen. Anschließend kannst du das Blatt ausblenden.
Habs jetzt doch ohne Filter per Schleife gemacht. Ich nehme mal nicht an, dass es sich dabei um tausende von Datensätzen handelt.

Private Sub TextBox1_AfterUpdate()
Dim loLetzte As Long, i As Long, raListe As Range
With Worksheets("Daten")
If Me.TextBox1  "" Then
If WorksheetFunction.CountIf(.Columns("C"), Me.TextBox1) > 0 Then
loLetzte = .Columns("C").Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, _
searchdirection:=xlPrevious).Row
For i = 2 To loLetzte
If .Cells(i, "C") = Me.TextBox1 Then
If raListe Is Nothing Then
Set raListe = .Cells(i, "A").Resize(, 12)
Else
Set raListe = Union(raListe, .Cells(i, "A").Resize(, 12))
End If
End If
Next i
If Not raListe Is Nothing Then
Worksheets("Hilfstabelle").Range("A1").CurrentRegion.Clear
raListe.Copy Worksheets("Hilfstabelle").Range("A1")
Me.ListBox1.ColumnCount = 12
Me.ListBox1.ColumnWidths = "2 cm;2 cm;2 cm;2 cm;2 cm;2 cm;2 cm;2 cm;2 cm;2 cm;2 Pt;2 cm"
Me.ListBox1.Clear
Me.ListBox1.List = Worksheets("Hilfstabelle").Range("A1").CurrentRegion.Value
End If
Else
MsgBox "Suchbegriff " & Me.TextBox1 & " ist in Spalte C nicht vorhanden."
End If
End If
End With
Set raListe = Nothing
End Sub
Gruß Werner
Anzeige
AW: Listbox aus Tabellenblatt füllen
15.10.2021 22:29:21
Thomas
Hallo Werner, vielen Dank das guck ich mir morgen an. Was das neuerstellen angeht, das war meine Idee mot rowsource und Kopie, und dann immer ei. Tabellenblatt mit dem Wert aus Spalte c erstellen um die Daten dann per rowsource anzuzeigen. Was ja auch wie geschrieben grundsätzlich klappt, aber da es dann irgendwann zuviel tabellenblatter geben würde (gibt ca. 500 verschiedene Werte in Spalte C) würde ich die schon immer wieder löschen wollen und bei Bedarf (2-5 mal im Jahr) neuerstellen lassen. Aber vieleichtacht dein Code das auch überflüssig, wie gesagt guck ich mir morgen früh an. Schonmal vielen dank
Anzeige
AW: Listbox aus Tabellenblatt füllen
16.10.2021 08:41:20
Hajo_Zi
offen bedeutet es soll noch eine Antwort kommen.
Warum ist dein Beitrag Offen.
Du willst doch was machen. Soll jemand vorbei kommen?
Ich konnte dies im Beitrag nicht lesen!
Das ist nur meine Meinung zu dem Thema.
GrußformelHomepage
Anzeige
AW: Listbox aus Tabellenblatt füllen
16.10.2021 19:24:52
Thomas
Hallo Werner,
ich habe es jetzt mal so wie von dir geschrieben eingebaut , und es klappt alles genauso wie ich es mir vorgestellt habe. Vielen Dank für die Hilfe.
AW: Listbox aus Tabellenblatt füllen
19.10.2021 20:56:15
Thomas
Hallo Werner,
darf ich dich nochmal hier wegen belästigen. Klappt eigentlich alles sehr gut, nur werden die Daten unformatiert in die Listbox übernommen, sprich nicht als € ohne Nachkommastellen formatiert. Kann man das auch noch bewerkstelligen? Das gilt auch nur für die Spalten G,H und I, also 7,8,9, 1-6 ist Text und 10-12 sind Ganzzahlen mit Tausenderpunkten.
Und wenn wir schon beim "schön" machen sind, mach kann nicht z.b. auch Zeilenweise eine Hintergrund farbe hinterlegen, damit es übersichtlicher wird?
Danke
MFG
Thomas
Anzeige
AW: Listbox aus Tabellenblatt füllen
15.10.2021 22:28:30
ralf_b
du könntest auch immer ein und das Selbe Arbeitsblatt nutzen. Es würde reichen die Zellinhalte zu löschen bevor .paste ausgeführt wird.
hier mal was Ungetestetes.

txtWawiUmsatZDetails = txtWAWI.Value
with ThisWorkbook.Worksheets("UmsWawiULiefAbtei")
with  .UsedRange
.AutoFilter
.AutoFilter 3, txtWawiUmsatZDetails
.Copy
end with
end with
on error resume next
Worksheets.Add.Name = txtWawiUmsatZDetails
on error goto 0
with Worksheets(txtWawiUmsatZDetails)
.Cells.clearcontents
.Paste
libUmsatzjeMarkt.ColumnHeads = True
libUmsatzjeMarkt.ColumnCount = 12
libUmsatzjeMarkt.RowSource = .name & "!A2:L" & .Range("A65536").End(xlUp).Row
end with

Anzeige
AW: Listbox aus Tabellenblatt füllen
16.10.2021 20:23:59
Thomas
Hi, danke auch dafür, auch damit funktioniert es wie es soll. Allerdings habe ich ein seltsames Problem, wenn ich die Daten auf UmsWawiULiefAbtei aktualisiere (Kommen über eine PowerQuery abfrage rein), dann bekomme ich anschließend bei der Anzeige des Umsatz einen Laufzeitfehler 1004 "Autofiltermethode des Range Objekts konnte nicht ausgeführt werden". um im Code wird das angemarkert .AutoFilter
Hast du eine idee woran das liegen könnte?
danke
Anzeige
AW: Listbox aus Tabellenblatt füllen
17.10.2021 00:20:36
ralf_b
wenn der Autofilter schon gesetzt ist, könnte das aufrufen evtl. auf einen Fehler laufen.
AW: Listbox aus Tabellenblatt füllen
18.10.2021 22:27:03
Thomas
Nein das dürfte es nicht sein, hab es auch schon auskommentiert und dann schlägt es beim sortieren fehl, aber immer nur wenn ich vorher über PowerQuery die Daten aktualisiert habe.
Hab aber noch ein neues Problem, wenn ich deinen Code bei mir ein baue klappt alles, wenn ich denn dann nochmal in dieser Form darunter kopiere

Worksheets("Ums").UsedRange.AutoFilter
Worksheets("Ums").UsedRange.AutoFilter 2, txtDaten
Worksheets("Hilfstabelle2").Range("A1").CurrentRegion.Clear
Worksheets("Ums").UsedRange.Copy Destination:=Worksheets("Hilfstabelle2").Range("A1").CurrentRegion
libZahlen.ColumnHeads = True
libZahlen.ColumnCount = 10
Worksheets("Hilfstabelle2").Activate
libZahlen.RowSource = ActiveSheet.Name & "!B2:J" & ActiveSheet.Range("A65536").End(xlUp).Row
dann klappt alles inkl. dem Filtern, allerdings kopiert wird dann der ungefilterte Bereich von Worksheets("Ums"), obwohl wenn ich mir das Tabellenblatt an sehe der Bereich gefiltert ist.Hast du eine idee wieso beim Kopieren der ungefilterte Bereich genommen wird?
Danke
Anzeige
AW: Listbox aus Tabellenblatt füllen
18.10.2021 23:05:24
ralf_b
kann ich so nicht nachvollziehen.
AW: Listbox aus Tabellenblatt füllen
15.10.2021 05:32:52
Hajo_Zi
Warum Du eine Long Variable als Worksheets definierst muss mir nicht klar sein.
Jj das ehe ich auch so das die Schleiofe zu keinen Fehler führt. Die Schleiofe läufzt cvon 1 bis 0 wird also Null mal ausgeführt.
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
ändern.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
Gruß Hajo
Anzeige
Kleiner Tipp:
16.10.2021 16:41:40
{Boris}
Hi Hajo,
...das Forum hat auch eine Vorschaufunktion. Damit wäre Dir sicher aufgefallen, dass Du bei 25 Wörtern / Zahlen 8 mal daneben gegriffen hast (Respekt!) ;
Jj das ehe ich auch so das die Schleiofe zu keinen Fehler führt. Die Schleiofe läufzt cvon 1 bis 0 wird also Null mal ausgeführt.
VG, Boris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige