Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1652to1656
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 mit Object befüllen?

Listbox mit Object befüllen?
01.11.2018 13:00:54
Phil
Hallo zusammen,
ich habe eine Frage, bezüglich des befüllen einer Listbox.
In einem Sheet sind mehrere Einträge einer Bestell-Liste mit einem Preis vorhanden.
Bedeutet, es wird eine Liste geführt, z.B.:
ID - Bezeichnung - Preis - Datum
1 - Cola - 1,30€ - 02.10.2018
2 - Bier - 2,50€ - 02.10.2018
3 - Cola - 1,30€ - 02.10.2018
usw...
Nun würde ich gerne über eine Userform eine Auswertung gestalten. Momentan habe ich es so konfiguriert, dass bei der Auswahl des Datums, alle Einträge in einer Listbox aufgeführt werden. Zusätzlich wird der Gesamtpreis aller Bestellungen an diesem Tag ausgegeben und in ein Textfeld geschrieben. Allerdings werden hier alle Bestellungen, ob Cola oder Bier zusammen addiert.
Nun die Frage:
Wie kann ich der Listbox alle gleichen Einträge addieren, damit nur
Cola - Gesamtpreis
Bier - Gesamtpreis
usw - Gesamtpreis
aufgelistet wird?
Kurz um, ich hätte gerne alle gleichen Einträge summiert und in der TextBox ausgegeben, natürlich auf die Bezeichnung /Produkt bezogen...
Ich hoffe es ist verständlich ausgedrückt.
Danke im voraus für die Hilfe.
Grüße Phil

46
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox mit Object befüllen?
01.11.2018 13:03:56
onur
Frag doch mal Jemanden, der deine Datei und deinen bisherigen Code sehen kann.
AW: Listbox mit Object befüllen?
01.11.2018 13:10:50
Phil
Danke dir für die Antwort.
Ich habe natürlich bereits jemanden darüber gefragt, allerdings war er sich nicht 100 Prozent sicher.
Es geht hier zunächst um eine Anforderung, wie diese gelöst werden kann. Ich denke hierfür ist der Code nicht relevant.
Meine Überlegung ist, dies mit einem Object Dictionary zu konfigurieren. Allerdings bin ich mir unsicher, wie ich in einem Object, den Preis, bei eine gleichen Key oder Item addieren kann und dieses Object am Schluss in eine Textbox korrekt zu schreiben.
Falls dies überhaupt möglich ist.
Grüße Phil
Anzeige
AW: Listbox mit Object befüllen?
01.11.2018 13:14:55
onur
"Ich denke hierfür ist der Code nicht relevant." ?
Wenn du hier Hilfe willst, solltest du es uns überlassen, zu beurteilen, was relevant ist.
Erwartest du dass man deine Datei nachbaut, damit man dir helfen kann?
NATÜRLICH ist das "Problem" lösbar, aber bestimmt NICHT, wenn du hier nix postest.
AW: Listbox mit Object befüllen?
01.11.2018 13:45:16
Phil
@ onur:
wieso denn gleich so aggresiv ;-), ich bleibe doch auch normal.
Klar will ich Hilfe, sonst würde ich mich nicht hier melden.
Ich erwarte natürlich nicht, dass man meine Datei nachbaut und mir die Lösung präsentiert. Ich würde mich einfach nur über Vorschläge freuen, vielleicht ein zwei Code Schnipsel, wie ihr dieses Problem lösen würdet.
---
Zwecks dem Lösungsvorschlag "Teilergebnis". Gerne würde ich dies in VBA konfigurieren und nicht in Excel. Danke dir für dein Vorschlag.
Grüße Phil
Anzeige
AW: Listbox mit Object befüllen?
01.11.2018 13:56:21
onur
Das war keineswegs agressiv gemeint.
Ich kann dir keinen Code für die Befüllung einer Listbox posten, wenn ich weder weiss, wie deine Listbox heisst noch in welcher Zeile und Spalte auf dem Sheet die zu befüllenden Einträge sich befinden.
Das heistt, ich müsste jedes Detail dir "aus der Nase ziehen" und das kostet Zeit und Nerven.
Wenn du von Anfang an eine (oder die Original-) Datei gepostet hättest, wäre das Problem längst gelöst.
AW: Listbox mit Object befüllen?
01.11.2018 14:10:07
Phil
Ok, entschuldige mein Ausdruck.
Deine Aussage ist natürlich verständlich. Allerdings kann ich die Werte "Textbox", Zellen usw anpassen, dies ist kein Thema.
Mir geht es rein um die Idee, wie Ihr so etwas umsetzten würdet und wie so ein Code ausschaut.
Anzeige
AW: Listbox mit Object befüllen?
01.11.2018 14:12:05
onur
Also noch einmal:
Wie der Code so aussieht, hängt davon ab, wie das Blatt aussieht.
AW: Listbox mit Object befüllen?
01.11.2018 14:27:02
Phil
Hi,
anbei ein TestSheet, welches ich kurz erstellt habe.
Das Blatt "Bestellungen" ist der korrekte Auszug aus dem Live Sheet.
https://www.herber.de/bbs/user/125048.xlsm
Auf der ersten Seite habe ich kurz eine Userform erstellt, welche eine Textbox ausgibt.
Dort soll im besten Fall
Anzahl - Bezeichnung - Gesamtbetrag der Bestellungen ausgegeben werden.
Danke im Voraus
AW: Listbox mit Object befüllen?
01.11.2018 15:20:30
Daniel
Hi
hast du dir schon mal überlegt die Auswertung mit Hilfe der Pivottabelle zu machen?
dann musst du nichts programmieren.
Gruß Daniel
Anzeige
AW: Listbox mit Object befüllen?
01.11.2018 16:09:05
Phil
Hi onur,
danke dir für die Hilfe, funktionier klasse. Eine Frage hätte ich allerdings noch.
https://www.herber.de/bbs/user/125053.xlsm
Hier habe ich dir nochmal eine Datei hochgeladen, wo die Userform überarbeitet ist. Und zwar habe ich zwei Comboboxen über der Listbox, in welchen der Tag oder der Monat ausgewählt werden kann.
Gerne würde ich die Listbox wie von dir programmiert befüllen, allerdings nur auf den im Combobox ausgewählten Tag, oder den Monat...
Was muss hierzu noch dazu konfiguriert werden?
Danke dir im Voraus.
Anzeige
AW: Listbox mit Object befüllen?
01.11.2018 16:11:36
onur
Da ist nur die alte Datei, nix mit Comboboxen oder so.
AW: Listbox mit Object befüllen?
01.11.2018 17:18:08
Phil
Danke dir für deine Hilfe.
Du hast nun meine Comboboxen umgebaut. Darf ich Nachfragen aus welchem Grund?
Ich würde gerne nur die zwei Comboboxen von mir behalten, und anhand vom genauen Tag (Combobox1) die Bestellungen Matchen oder anhand dem Bestell Monat, welcher in den Bestellungen auch vorhanden ist.
Ich hatte extra die zwei Comboboxen benutzt, da so gewährleistet ist, dass nur die Tage ausgewählt werden können, an denen überhaupt etwas gebucht wurde.
Grüße Phil
Anzeige
AW: Listbox mit Object befüllen?
01.11.2018 17:24:03
onur
Weil VBA mit dem Text "Februar" nix anfangen kann, dafür müsste ich meinen Code mehr umschreiben, als notwendig.
Die Tage (Datum) sind kein Problem.
AW: Listbox mit Object befüllen?
01.11.2018 17:26:04
Phil
Verstanden, bedeutet ich sollte für die Monate " 1-12" benutzen. Und für die Tage kann ich meine KOnfiguration wie bisher benutzen, dass nur die angezeigt werden, an welchen auch eine Bestellung getätigt wurde?
In dem Format 21.09.2018.
AW: Listbox mit Object befüllen?
01.11.2018 17:33:55
onur
Erstens auf 1-12 umstellen.
Dann muss ich wissen, ob die Tage in "Bestelldatum" abhängig vom Monat sein sollen, denn zur Zeit ist es nicht so, - egal welcher Monat gewählt wird, die Listbox mit den "Datums" bleibt gleich (zeigt alle).
Anzeige
AW: Listbox mit Object befüllen?
01.11.2018 17:45:21
Phil
Die Idee von dir, mit dem Jahr einbauen, finde ich eigentlich ziemlich gut. Ich habe noch gar nicht daran gedacht, was passiert, wenn das Jahr vorbei ist :D
Also es sollte im Ideal Fall so sein:
Drei Comboboxen: Jahr, Monat und Tag
Es wäre perfekt, wenn ich das Jahr auswähle, dass dann alle Umsätze im Jahr angezeigt werden.
Wenn man den Monat dazu auswählt, alle Umsätze in diesem Jahr + diesen Monat und wenn man den Tag dazu auswähl, dann alle Umsätze, genau an diesem Datum.
Perfekt wäre, wenn es eine Abhängigkeit gäbe, dass im Tag nur die Tage ausgewählt werden können, welche es auch Tatsächlich in den Bestellungen gibt.
Bedeutet, wenn am 22.09.2018 keine Bestellung getätigt wurde, dann soll der Tag 22 nicht zur Auswahl stehen.
Ich wäre dir sehr sehr sehr dankbar, wenn du mir hierbei noch helfen könntest.
Grüße Phil
Anzeige
AW: Listbox mit Object befüllen?
01.11.2018 17:49:58
onur
"Es wäre perfekt, wenn ich das Jahr auswähle, dass dann alle Umsätze im Jahr angezeigt werden.
Wenn man den Monat dazu auswählt, alle Umsätze in diesem Jahr + diesen Monat und wenn man den Tag dazu auswähl, dann alle Umsätze, genau an diesem Datum."
Das tut es doch auch.
Das Andere kann ich dir noch einbauen.
AW: Listbox mit Object befüllen?
01.11.2018 17:56:43
Phil
Danke dir hierfür. Danke... // -.-
##
Wenn ich das Jahr + Monat auswähle, dann werden die Umsätze angezeigt. Allerdings wenn ich nur das Jahr auswähle, dann werden nicht alle Umsätze des Jahrs aufgelistet.
Und eben die Tatsächlichen Tage noch, danke dir ;-).
Grüße
Anzeige
AW: Listbox mit Object befüllen?
01.11.2018 18:21:14
Phil
Megaaaa... Genau so wollte ich es.
Danke dir nochmals für deine Klasse Hilfe und Geduld mit mir ;-)
Ich werde mir nun den Code einmal genauer ansehen und hoffe, dass ich verstehe, was du programmiert hast.
AW: Listbox mit Object befüllen?
01.11.2018 19:26:51
Phil
Ich habe nun kurz deinen Code überflogen und muss diesen mir in den nächsten Tagen nochmals genauer anschauen :D. Ziemlich viele Schleifen hast du darin verbaut ...
Eine Frage noch: Hat es einen Grund, wieso du kein Object Dictionary benutzt hast?
Grüße
Ende nie ? Rekord-Beitrag!
01.11.2018 19:49:33
robert
owT
AW: Listbox mit Object befüllen?
01.11.2018 13:46:10
Daniel
Hi
in etwa so:
Sub Bestellungen() Dim arr Dim dic Dim K Dim z arr = Cells(1, 1).CurrentRegion.Value Set dic = CreateObject("Scripting.Dictonary") For z = 2 To UBound(arr, 1) dic(arr(z, 2)) = dic(arr(z, 2)) + arr(z, 3) Next ReDim arr(1 To dic.Count, 1 To 2) z = 0 For Each K In dic.keys z = z + 1 arr(z, 1) = K arr(z, 2) = dic(K) Next Listbox1.List = arr End Sub gruß Daniel
AW: Listbox mit Object befüllen?
01.11.2018 13:54:44
Phil
@Daniel, danke dir für das Beispiel mit dem Code.
Ich habe gerade versucht, den Code zu verstehen, allerdings habe ich etwas Probleme damit.
Wäre es möglich, dass du mir kurz helfen kannst, an welcher Stelle du was in dem Code machst?
Danke im Voraus.
Grüße Phil
AW: Listbox mit Object befüllen?
01.11.2018 13:58:34
Daniel
ist doch eigentlich ganz einfach:
1. die Excelliste in ein array laden
2. mit einer Schleife über die Arraywerte laufen, das Dictonary mit den Getränken (spalte 2) als Key anlegen und die Getränkepreise(Spalte 3) für jeden Key aufaddieren
3. Anzahl der Elememente im Dictionary ermitteln und ein array für die Aufnahme des Ergebnisses dimensionieren.
4. mit einer Schleife über die Schlüsselwörter des Dicitonarys laufen und dann jedes Schlüsselwort mit seinem zugeordneten Wert ins Array schreiben
5. Array der Listbox zuweisen.
Gruß Daniel
AW: Listbox mit Object befüllen?
01.11.2018 14:13:11
Phil
Danke dir.
Klingt erstmal recht einfach, allerdings ist der Code dazu ziemlich verwirrend ;-).
Ich werde diesen zum Test einmal einbauen und schauen, ob ich diesen zum laufen bekomme.
AW: Listbox mit Object befüllen?
01.11.2018 14:17:53
Daniel
Hi
bei VBA gut sollte dich dieser Code nicht mehr verwirren.
das sind doch zwei einfache Schleifen, mehr nicht.
was verstehts du denn nicht?
Gruß Daniel
AW: Listbox mit Object befüllen?
01.11.2018 14:17:55
Daniel
Hi
bei VBA gut sollte dich dieser Code nicht mehr verwirren.
das sind doch zwei einfache Schleifen, mehr nicht.
was verstehts du denn nicht?
Gruß Daniel
AW: Listbox mit Object befüllen?
01.11.2018 14:34:05
Phil
Sry, dann stimmt wohl das "VBA - gut " nicht.
Ich habe einfach bisher wenig mit Object Dictionary gemacht, deswegen bin ich mir bei dem Code unsicher, an welcher Stelle was genau passiert.
AW: Listbox mit Object befüllen?
01.11.2018 14:54:32
Daniel
ein Dictionary ist nichts anderes, als ein eindimensionales Array mit einem Freitextindex.
mit dic.Keys kann man an die Schlüsselwörter des Freitextes kommen, mit dic.Items an die Werte dazu.
mit for each K in dic.Keys kannst du eine Schleife über alle Schlüsselwörter des Dictionarys laufen lassen.
mit arr = dic.Keys kannst du die Schlüsselwörter in ein normales eindimensionales Array laden
mit arr = dic.Items kannst du die Werte zu den Schlüsselwörtern in ein eindimendionales Array laden (gleiche Reichenfolge)
ich hoffe mal, das hilft dir weiter, selbstständig mit dem Dictionary-Objekt zu programmieren.
gruß Daniel
AW: Listbox mit Object befüllen?
01.11.2018 14:55:53
Phil
Danke dir nochmals für die Erklärung. Bringt mich auf alle Fälle ein Stück weiter. Ich werde es nun einmal versuchen anzuwenden.
AW: Listbox mit Object befüllen?
01.11.2018 15:13:13
Phil
Hi Daniel,
vllt ist es zu viel verlangt, aber kannst du eventuell bei Gelegenheit den Code auf diese Mappe anpasen?
https://www.herber.de/bbs/user/125050.xlsm
Ich habe den Auszug der Bestellungen exportiert und habe eine Userform mit einer Listbox erstellt (nur zum Test).
Ich steige bei dem Code einfach nicht durch.
Wenn ich es direkt an einem Beispiel sehe, kann ich es mir sicherlich besser vorstellen.
Grüße Phil
AW: Listbox mit Object befüllen?
01.11.2018 15:24:52
Daniel
wie sehen denn deine bisherigen Codeversuche aus?
ich erwarte schon ein bisschen Eigenintitiative.
ich hab dir ja zum Thema Dictionary schon was erkärt und das Thema ist für dich ja nicht grundsätzlich neu.
Und wie gesagt, du hast dich als VBA-Gut eingeschätzt ;-)
da sollte zumindest ein bisschen was da sein.
Gruß Daniel
AW: Listbox mit Object befüllen?
01.11.2018 15:31:34
Phil
Momentan habe ich ehrlich gesagt Probleme mit meinem Excel. SObald ich die Makros aktiviere, hängt sich Excel auf und friert ein.
Ich habe soeben noch eine neue Version von Excel 2016 geordert, um ein Update durchzuführen, allerdings habe ich den Key bisher noch nicht bekommen.
Wie ich bereits gesagt habe, ist wohl der Status "VBA - Gut" so nicht korrekt und muss eher korrigiert werden ;-). Allerdings weiß ich nicht, ob dies noch nachträglich möglich ist.
Ich habe versucht deinen Code in dieses von mir hochgeladene Sheet einzuspielen, allerdings habe ich dort ständig einen "Objekt Fehler" bekommen.
Bisher habe ich die Objekte nur genutzt, um z.B. eine Combobox mit dem Datum aus den Bestellungen zu befüllen. z.B.:

Dim intErsteZeileBestellungen As Integer
Dim intLetzteZeileBestellungen As Integer
Dim i As Long
Dim objDic As Object
Dim wsf As WorksheetFunction
'Object wird erstellt, damit dieses benutzt werden kann
'Zusätzlich wird die Application als Variabe deklariert
Set objDic = CreateObject("Scripting.Dictionary")
Set wsf = Application.WorksheetFunction
'Combobox löschen
cboBestelllDatum.Clear
'Erste und Letzte Zeile im Sheet "Bestellungen" wird bestimmt
intErsteZeileBestellungen = 5
intLetzteZeileBestellungen = Bestellungen.Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Row -  _
1
With Sheets("Bestellungen")
For i = intErsteZeileBestellungen To intLetzteZeileBestellungen
If .Cells(i, 4)  "" Then
'Abfrage, ob es den Eintrag in Bestellungen.Cells (i, 4) im Object bereits gibt
If Not objDic.exists(.Cells(i, 4).Value) Then
'Wenn Nein, dann Add Item
objDic(.Cells(i, 4).Text) = 0
End If
End If
Next i
End With
'Combobox wird mit Object befüllt
'Anhand der zuvor deklarieren Application Worksheet Variable
Me.cboBestelllDatum.List = wsf.Transpose(objDic.keys)
'Object leeren
Set objDic = Nothing

AW: Listbox mit Object befüllen?
01.11.2018 15:39:31
Daniel
naja und jetzt füllst du dein Dictionaryobjekt eben nicht mit dem Datum sondern mit dem Getränkenamen und addierst zu dessen Wert gleich den Getränkepreis hinzu.
Wo ist da das Problem?
Gruß Daniel
AW: Listbox mit Object befüllen?
01.11.2018 15:44:48
Phil
Okay verstanden. Aber genau an dieser Stelle hänge ich und komme einfach nicht weiter. Ich habe keine Ahnung, wie ich es genau umsetzen soll, bzw. wie ich zu diesem Wert den Preis addieren soll.
So etwas habe ich leider noch nie konfiguriert.
AW: schau Dir mal (m)eine Alternative an ...
01.11.2018 16:14:43
Phil
HI Matthias,
danke dir für deinen Vorschlag. Sieht auch sehr gut aus, allerdings würde ich ungern ein Getränk auswählen, sondern ich würde gerne anhand des Datums oder des MOnats eine Auswertung über die einzelnen Getränke bekommen.
In der unten verlinkten Excel habe ich die Userform um zwei Comboboxen erweitert, in denen das Datum ausgewählt werden kann.
https://www.herber.de/bbs/user/125053.xlsm
wo ist das Problem ?
01.11.2018 17:20:01
Matthias
Hallo
Kannst Du denn die Spalten nicht selbst anpassen?
Userbild
Gruß Matthias
AW: wo ist das Problem ?
01.11.2018 17:47:50
Phil
Danke dir Matthias für deine Lösung.
Dies wäre auf jeden Fall eine Option und in Zukunft werde ich daran denken, wenn ich ähnliche Dinge umsetzen will. Ich würde dies allerdings gerne wie oben von "onur" umsetzen.
Grüße Phil
kein Problem ...
01.11.2018 18:52:54
Matthias
Hi
Habs übrigens inzwischen erweitert mit AuswahlOptionen für die Summierung ;-)
Userbild
Gruß Matthias
Filter mit Teilergebnis willst du nicht ?
01.11.2018 13:13:25
Matthias
Hallo
Teilergebnis willst du nicht?
Tabelle1

 ABCDEF
1IDBezeichnungPreisDatum 2,60 €
21Cola1,30 €02.10.2018  
43Cola1,30 €02.10.2018  

Formeln der Tabelle
ZelleFormel
F1=TEILERGEBNIS(9;C:C)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Matthias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige