Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1808to1812
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 abfrage

Listbox abfrage
07.02.2021 07:22:35
Jürgen
Hallo liebes Forum, ich hab eine knifflige Frage.
Der letzte Step meines Projektes.
In einer Listbox befinden sich die Daten der Mitarbeiter (Name, Kostenstelle und Stunden)
Auf dem Excel Blatt soll nun die Daten eingetragen werden, damit sie ausgedruckt werden können.
Soweit so gut, das hab ich schon realisiert:
Dim loletzte As Long
loletzte = ListBox1.ListCount - 1  'letzte beschriebene zelle
For N = 0 To ListBox1.ListCount - 1
Cells(N + 6, "A") = ListBox1.List(N, 0)
Cells(N + 6, "B") = ListBox1.List(N, 1)
usw.......
Next
Jetzt will ich das die Listbox durchgegangen wird:
ist Name = "XYName" und Kostenstelle = "XYKostenstelle" dann bitte "Stunden" in Exzel Tabelle Zeile "XYName" und Spalte "XYKostenstelle"
Ich hoffe ihr könnt mir helfen...
Der ein oder andere wird mich schon kennen und wissen das ich kein Programier Genie bin und nie werde .
Das was ich hier zusammen bastle ist für meinen Freund der dies braucht für die Feuerwehr (Brandschutz abrechnung in einer Firma).
Ich bitte um nachsicht
Lg Jürgen

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox abfrage
07.02.2021 08:02:30
Hajo_Zi
Warum muss ein Wert 1.048.576 mal in eine Spalte geschrieben werden und waru, muss ein wert 16.... in eine Zeile geschrieben werden. In welche Saplte? Welche Zeile?
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.
Falls Link nicht ausgeführt wird:
1. Link kopieren
2. rechte Maustaste neues Fenter.
3. Umschaltstaste drücken und Klick auf den Link
4. STRG+ Link mit Maus aktivieren

Anzeige
AW: Listbox abfrage
07.02.2021 08:20:33
Oberschlumpf
Hi Jürgen,
ja, zeig mal bitte eine Bsp-Datei mit allem, was erforderlich ist, um dein Problem zu verstehen, durchtesten zu können.
(ich glaube, es stimmt nicht, was HaJo vermutet, dass bestimmte Werte immer und immer wieder in die selbe Zelle geschrieben werden)
Und unabhängig davon, denke ich, dass man deinen Code noch etwas "verkürzen" kann, wenn die genutzen Spalten in der Zieltabelle fortlaufend ohne Auslassen von Spalten sind)

For N = 0 To ListBox1.ListCount - 1
TabellenSpalte = 1
For ListSpalte = 0 To LetzteListSpalte
Cells(N + 6, TabellenSpalte) = ListBox1.List(N, ListSpalte)
TabellenSpalte = TabellenSpalte + 1
Next
Next

erkennst du es?
Wenn ich recht hab, musst du Cells(N + 6, TabellenSpalte) = ..... nur 1x schreiben und nicht so oft, wie Spalten in der Tabelle genutzt werden.
Na ja, mein Codebsp ist nur beispielhaft. Mit deiner Bsp-Datei würde bestimmt vieles einfacher für die Antworter werden.
Ciao
Thorsten
Anzeige
AW: Listbox abfrage
07.02.2021 09:00:43
Jürgen
Hallo ihr beiden.
Um das Projekt im gesamten zu verstehen ist es notwendig die original Datei hoch zu laden.
Zum zurechtfinden:
1. unter "Optionen" muss Die Kostenstelle eingefügt werden (Tabellenblatt Kostenstelle ist hier die Source)
2.) unter "Userboard" werden neue Benutzer bzw. Feuerwehrkameraden angelegt (Tabellenblatt Login ist hier die Source)
3.) im "Stundenmanager" können nun neue Daten angelegt werden, dabei muss Name, Datum und Zeitbereich eingegeben werden. (Tabellenblatt "Daten" ist hier die Source)
Filtern funktioniert alles sehr gut.
Der Button drucken, soll die aktuelle Liste ausdrucken. Das passt so, dabei werden die aktuellen gefilterten Daten der Listbox in das Tabellenblatt "Drucken" kopiert, der Druckberreich festgelegt und gedruckt.
so und nun gehts um mein Problem.
Beim klick des Buttons "Monatsbericht drucken" sollen die Werte aus dem gewählten Jahr und Monat gefiltert werden. Das ist e schon realisiert.
Jetzt müssen die Werte ins Tabellenblatt "Übersicht" übertragen werden.
Zum Tabellenblatt "Übersicht"
- Die Namen werden vom Tabellenblatt "Login" übernommen
- Die Kostenstellen vom Tabellenblatt "Kostenstelle"
Kamerad Hans Meier hat im Monat Mai zb. 3 Stunden in kst.1 gearbeitet und 2 Stunden in kst.2
jetzt muss im Tabellenblatt "Übersicht" in der Zeile von Hans Meier 3 Stunden in die Spalte kst.1 und 2 STunden in kst.2 eingetragen werden.
und so soll die gesamte Liste, bis zum letzten Kameraden durchgegangen werden.
Die Datei findet ihr hier: www.alpinfreunde.at/TEST
leider könnte ich das interne System nicht verwenden da nur 300 kb erlaubt sind und meine Date 600 kb hat
Boooa, ich hoffe ihr versteht mich und könnt und wollt mir helfen
Lg Jürgen
Anzeige
AW: Listbox abfrage
07.02.2021 11:33:09
Werner
Hallo,
die Datei habe (und werde mir die auch nicht) herunterladen. Wenn die fürs Forum zu groß ist, dann kannst du ja für das Problem nicht relevante Teile löschen und die Datei ggf. auch als Zip-Datei hier hochladen.
Wenn ich dich richtig verstanden habe, dann hilft dir ja vielleicht auch schon das hier.
Ich bin jetzt einfach mal davon ausgegangen, dass im Blatt "Zusammenfassung" die Namen in Spalte A stehen und die Kostenstellen in Zeile 1. Wenn nicht anpassen.
Die Namen in Spalte A müssen mit den Namen in Spalte 0 der ListBox genau übereinstimmen.
Sub Makro2()
Dim N As Long, raMitarbeiter As Range, raKosten As Range
With Worksheets("Übersicht")
If Me.ListBox1.ListIndex > -1 Then
For N = 0 To ListBox1.ListCount - 1
Set raMitarbeiter = .Columns("A").Find(what:=Me.ListBox1.List(N, 0), _
LookIn:=xlValues, lookat:=xlWhole)
Set raKosten = .Rows(1).Find(what:=Me.ListBox1.List(N, 1), _
LookIn:=xlValues, lookat:=xlWhole)
If Not raMitarbeiter Is Nothing And Not raKosten Is Nothing Then
.Cells(raMitarbeiter.Row, raKosten.Column) = CDbl(Me.ListBox1.List(N, 2))
Set raMitarbeiter = Nothing: Set raKosten = Nothing
End If
Next N
End If
Set raMitarbeiter = Nothing: Set raKosten = Nothing
End Sub
Gruß Werner
Anzeige
AW: Listbox abfrage
07.02.2021 12:33:16
Jürgen
Hallo Werner, danke erstmal.
Es passiert gar nix, hab ich da was falsch umgeschrieben?
Tabelle:
Spalte A befinden sich die Namen,
in Zeile 5 befinden sich die Kostenstellen
Listbox:
in Spalte 1 befinden sich die Namen
in Spalte 2 befinden sich die Kostenstellen
hier der Code:
Dim N As Long, raMitarbeiter As Range, rastunden As Range
With Worksheets("Übersicht")
If Me.ListBox1.ListIndex > -1 Then
For N = 0 To ListBox1.ListCount - 1
Set raMitarbeiter = .Columns("A").Find(what:=Me.ListBox1.List(N, 0), _
LookIn:=xlValues, lookat:=xlWhole)
Set rastunden = .Rows(5).Find(what:=Me.ListBox1.List(N, 1), _
LookIn:=xlValues, lookat:=xlWhole)
If Not raMitarbeiter Is Nothing And Not rastunden Is Nothing Then
.Cells(raMitarbeiter.Row, rastunden.Column) = CDbl(Me.ListBox1.List(N, 2))
Set raMitarbeiter = Nothing: Set rastunden = Nothing
End If
Next N
End If
Set raMitarbeiter = Nothing: Set rastunden = Nothing
End With
vielen lieben Dank für die Unterstützung
lg Jürgen
Anzeige
AW: Listbox abfrage
07.02.2021 14:59:51
Werner
Hallo,
der Code war auch Käse - Fehler meinerseits:
Private Sub CommandButton1_Click()
Dim N As Long, raMitarbeiter As Range, raStunden As Range
With Worksheets("Übersicht")
For N = 0 To ListBox1.ListCount - 1
If Me.ListBox1.Selected(N) Then
Set raMitarbeiter = .Columns("A").Find(what:=Me.ListBox1.List(N, 0), _
LookIn:=xlValues, lookat:=xlWhole)
Set raStunden = .Rows(5).Find(what:=Me.ListBox1.List(N, 1), _
LookIn:=xlValues, lookat:=xlWhole)
If Not raMitarbeiter Is Nothing And Not raStunden Is Nothing Then
.Cells(raMitarbeiter.Row, raStunden.Column) = CDate(Me.ListBox1.List(N, 2))
Set raMitarbeiter = Nothing: Set raStunden = Nothing
End If
End If
Next N
End With
Set raMitarbeiter = Nothing: Set raStunden = Nothing
End Sub
Gruß Werner
Anzeige
AW: Listbox abfrage
07.02.2021 15:46:10
Jürgen
Hi Werner, also es passiert gar nichts....
Vielleicht verstehst du mich falsch, ich versuche es noch einmal detailierter:
Also in der Listbox befinden sich alle Daten
im Datenblatt "Übersicht" sind in Reihe 5 alle Kostenstellen aufgelistet
in Spalte "A" alle Mitarbeiter
der User wählt nun Jahr und Monat, Die Liste wird nun dementsprechend gefiltert.
in Spalte 1 der Listbox kann natürlich jetzt x mal die selbe Person stehen.
mögliches Ergebniss in Listbox:

Name:          Kostenstelle:   Stunden:
Jürgen Unterweger     kst1             2
Jürgen Unterweger     kst1             3
Jürgen Unterweger     kst2             2
Hans Meier            kst1             8
Franz Huber           kst2             2
usw......
Nun muss es so sein das die Spalte 1 der Listbox schritt für schritt durchgegangen wird.
In der Tabelle soll nun folgendes stehen:

Name:                 Kst1    kst2
Jürgen Unterweger       5       2
Hans Meier              8
Kurt Eiersebner
Franz Huber                     2
usw........

Lg Jürgen
Anzeige
AW: Listbox abfrage
07.02.2021 16:25:00
Werner
Hallo,
dann noch mal. Lade deine Mappe hier im Forum hoch.
Zweite Möglichkeit: Du wartest, bis sich jemand findet der sich das Ding aus deinem vorher geposteten Link holt. Ich jedenfalls nicht.
Gruß Werner
AW: Listbox abfrage
08.02.2021 07:13:41
Werner
Hallo,
der Code ist auch für eine "Multiselect" ListBox. Ich habe jetzt keine Ahnung wie ich darauf gekommen bin. Hab jetzt alle deine Beiträge nochmals durchgelesen, da war aber nirgends was von einer Multiselect Listbox. Also - keine Ahnung wie ich auf das Brett gekommen bin.
Hier jetzt nochmal der Code:
Private Sub CommandButton18_Click()
Dim N As Long, raMitarbeiter As Range, raStunden As Range
If b Then Exit Sub
b = True
With Worksheets("daten").Range("a3:i3")
.AutoFilter Field:=7, Criteria1:=ComboBox2.Value
.AutoFilter Field:=8, Criteria1:=ComboBox3.Value
End With
With Worksheets("Übersicht")
For N = 0 To ListBox1.ListCount - 1
Set raMitarbeiter = .Columns("A").Find(what:=Me.ListBox1.List(N, 0), _
LookIn:=xlValues, lookat:=xlWhole)
Set raStunden = .Rows(5).Find(what:=Me.ListBox1.List(N, 1), _
LookIn:=xlValues, lookat:=xlWhole)
If Not raMitarbeiter Is Nothing And Not raStunden Is Nothing Then
.Cells(raMitarbeiter.Row, raStunden.Column) = _
.Cells(raMitarbeiter.Row, raStunden.Column) + CDbl(Me.ListBox1.List(N, 5))
Set raMitarbeiter = Nothing: Set raStunden = Nothing
End If
Next N
End With
Set raMitarbeiter = Nothing: Set raStunden = Nothing
End Sub
Der Wert aus der Listbox muss per CDbl in die Zelle geschrieben werden. CDate schreibt ein Datum, das war nur als Beispiel, da die angesprochene Spalte in der Listbox ein Datum enthalten hat.
Zudem mußt du den Stundenwert aus der Spalte 5 der Listbox auf den Wert der Zelle aufaddieren. Zumindest im Beispiel hast du ja Personen in der Listbox, die mehrfach Stunden in der selben Kostenstelle erbracht haben. Wenn du jetzt den Listbox-Wert nicht auf den Wert der Zielzelle aufaddierst, dann hast du immer nur den letzten Wert in der Zielzelle stehen.
Ich will dir ja nicht zu nahe treten, aber der meiste Code ist ziemlich gruselig. Lauter Select und Activate.
Das braucht in 99,9 Prozent der Fälle kein Mensch und macht den Code nur langsam.
Zu Select/Activate siehe auch mal hier: https://www.online-excel.de/excel/singsel_vba.php?f=78
Gruß Werner
Anzeige
AW: Listbox abfrage
08.02.2021 11:45:11
Jürgen
Hi Werner.
Vielen, vielen Dank!
Jetzt funktioniert es so wie ich das will!
Dank dir von Herzen
Lg Jürgen
Gerne u. Danke für die Rückmeldung. o.w.T.
08.02.2021 11:48:30
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige