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

Summe aus Listboxspalte

Summe aus Listboxspalte
12.08.2013 14:00:55
Uwe
Hallo zusammen,
ich möchte die Summe einzelner Spalten aus der Listbox in Labels in einer Userform anzeigen.
Die Listbox hat 6 Spalten. Die Summe drei dieser Spalten sollen in den Labels 1,2 und 3 angezeigt werden. Für Label1 funktioniert das auch, jedoch die Label2 und 3 geben mir zwar eine Zahl aus aber das ist nicht die Summe der Spalte die ich haben möchte.
Hier mal der Code:

Private Sub ComboBox1_Change()
Dim objList As Object, arr, i As Long, j As Integer, arrTmp(1 To 1, 1 To 6), arrList()
Dim wert As Double
Dim wert1 As Double
Dim wert2 As Double
Set objList = CreateObject("Scripting.Dictionary")
With Sheets("Übersicht")
arr = .Range("A8:H1000")
End With
For i = 1 To UBound(arr)
If MonthName(Month(arr(i, 1))) = ComboBox1 Then
For j = 1 To 6
arrTmp(1, j) = arr(i, j)
Next
objList(i) = arrTmp
End If
Next
If objList.Count = 0 Then
ListBox1.Clear
Exit Sub
End If
arr = objList.items
arr = WorksheetFunction.Transpose(arr)
arr = WorksheetFunction.Transpose(arr)
ReDim arrList(1 To objList.Count, 1 To 6)
If objList.Count > 1 Then
For i = 1 To UBound(arr)
For j = 1 To 6
arrList(i, j) = arr(i, j)
Next
Next
Else
For i = 1 To 6
arrList(1, i) = arr(i)
Next
End If
ListBox1.ColumnCount = 6
ListBox1.List = arrList
'Ab hier soll die Summe der einzelnen Spalten
'in Listbox1 berechnet und in dem jeweiligen Label ausgegeben werden
For i = 0 To Me.ListBox1.ListCount - 1
wert = wert + Me.ListBox1.List(i, 3)  'Summe Betrag (Listbox1 Spalte 4)
wert1 = wert + Me.ListBox1.List(i, 2) 'Summe gefahrene km (Listbox1 Spalte 3)
wert2 = wert + Me.ListBox1.List(i, 4) 'Summe getankte Liter (Listbox1 Spalte 5)
Next i
Label1.Caption = wert          'gibt richtge Summe aus
Label2.Caption = wert1         'keine Fehlermeldung aber falsche Summe
Label3.Caption = wert2         'keine Fehlermeldung aber falsche Summe
Label4.Caption = Range("H3").Value    'gibt richtigen Wert aus
End Sub

Wo zum Geier liegt der Fehler?
Gruß Uwe

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Habs entdeckt
12.08.2013 14:10:41
Uwe
Hier lag der Fehler
For i = 0 To Me.ListBox1.ListCount - 1
wert = wert + Me.ListBox1.List(i, 3) 'Summe Betrag (Listbox1 Spalte 4)
wert1 = wert1 + Me.ListBox1.List(i, 2) 'Summe gefahrene km (Listbox1 Spalte 3)
wert2 = wert2 + Me.ListBox1.List(i, 4) 'Summe getankte Liter (Listbox1 Spalte 5)
VG Uwe

Habs entdeckt
12.08.2013 14:10:57
Uwe
Hier lag der Fehler
For i = 0 To Me.ListBox1.ListCount - 1
wert = wert + Me.ListBox1.List(i, 3) 'Summe Betrag (Listbox1 Spalte 4)
wert1 = wert1 + Me.ListBox1.List(i, 2) 'Summe gefahrene km (Listbox1 Spalte 3)
wert2 = wert2 + Me.ListBox1.List(i, 4) 'Summe getankte Liter (Listbox1 Spalte 5)
VG Uwe

Anzeige
Doch noch ein Fehler
12.08.2013 14:49:41
Uwe
Da war ich wohl zu optimistisch... ;-)
Meine UF mit der LB funtioniert soweit so wie ich das möchte. Außer im Monat Dezember, da bekomme ich dieser Zeile
wert1 = wert1 + Me.ListBox1.List(i, 2) 'Summe gefahrene km (Listbox1 Spalte 3)
den Debugger. "Laufzeitfehler13: Typen unverträglich".
Aber warum nur im Dezember? Egal ob Daten in diesem Monat vorhanden sind oder nicht.
Kurz zur Funktion:
Ich habe in der UF eine CB über die der Monat ausgewählt wird und dann in der LB die einzelnen Tankvorgänge des betreffenden Monats angezeigt werden. Zusätzlich werden einzelne Spalten der LB addiert und die Summe in Labels ausgegeben.
Der komplette Code steht im ersten Beitrag.
Weiß da jemand Rat?
Gruß Uwe

Anzeige
AW: Doch noch ein Fehler
12.08.2013 18:55:02
Bernd
Hallo Uwe,
du must deine Frage als offen deklarieren, ein Häkchen direkt neben der Passwortzeile.
Gruß
Bernd

AW: Doch noch ein Fehler
12.08.2013 23:35:16
Uwe
@Bernd: das wusste ich nicht. Bin erst seit kurzem im im Forum.
@ Matthias L: Ich dachte ich muß einen neuen Thread eröffnen um oben zu stehen und Antworten zu bekommen. Sorry bin neu hier.
Problem ist nun, das der Dezember die beschriebene Fehlermeldung bringt. Alles andere funktioniert bestens. Mit den Labels gings dann doch besser als mit den LB. Aufgrund meiner Unerfahrenheit wusste ich das vorher nicht.
Weiterhin, wie kann ich das Jahr noch auswählen? Ist dafür eine zweite CB nötig oder kann ich das mit der einen ebenfalls realisieren?
VG Uwe

Anzeige
AW: Summe aus Listboxspalte
12.08.2013 23:40:21
Uwe
Hallo Matthias,
Ich dachte ich muß einen neuen Thread eröffnen um oben zu stehen und Antworten zu bekommen. Sorry bin neu hier.
Problem ist nun, das der Dezember die beschriebene Fehlermeldung bringt. Alles andere funktioniert bestens. Mit den Labels gings dann doch besser als mit den LB. Aufgrund meiner Unerfahrenheit wusste ich das vorher nicht.
Weiterhin, wie kann ich das Jahr noch auswählen? Ist dafür eine zweite CB nötig oder kann ich das mit der einen ebenfalls realisieren?
VG Uwe

Anzeige
AW: Summe aus Listboxspalte
13.08.2013 06:39:23
robert
Hi,
hast Du die Summen nicht in der Tabelle berechnet?
Wenn nicht, dann tu das ;-)
Dann kannst Du die Werte aus den Zellen in die Labels übernehmen.
Gruß
robert

Nachfrage...
13.08.2013 08:37:35
robert
Hi,
hast Du Deine Datei umgebaut ?
Lt.der Datei im 1.Beitrag kommen doch falsche Summen raus-oder?

AW: Nachfrage...
13.08.2013 14:11:43
Uwe
Hi Robert,
ja hab umgebaut und berechne die Summen der Spalten in der LB und gebe sie in dem jeweiligen label aus. Funktioniert auch bestens. Problem ist eben das bei der Auswahl Dezember in der CB ein Laufzeitfehler kommt (Typen unverträglich). Hier nochmal der Code wie er jetzt ist.
Private Sub ComboBox1_Change()
Dim objList As Object, arr, i As Long, j As Integer, arrTmp(1 To 1, 1 To 6), arrList()
Dim wert As Double
Dim wert1 As Double
Dim wert2 As Double
Dim wert3 As Single
Set objList = CreateObject("Scripting.Dictionary")
With Sheets("Übersicht")
arr = .Range("A8:h1000")
End With
For i = 1 To UBound(arr)
If MonthName(Month(arr(i, 1))) = ComboBox1 Then
For j = 1 To 6
arrTmp(1, j) = arr(i, j)
Next
objList(i) = arrTmp
End If
Next
If objList.Count = 0 Then
ListBox1.Clear
Exit Sub
End If
arr = objList.items
arr = WorksheetFunction.Transpose(arr)
arr = WorksheetFunction.Transpose(arr)
ReDim arrList(1 To objList.Count, 1 To 6)
If objList.Count > 1 Then
For i = 1 To UBound(arr)
For j = 1 To 6
arrList(i, j) = arr(i, j)
Next
Next
Else
For i = 1 To 8
arrList(1, i) = arr(i)
Next
End If
ListBox1.ColumnCount = 8
ListBox1.List = arrList
'Ab wird die Summe der einzelnen Spalten
'in Listbox1 berechnet und in dem jeweiligen Label ausgegeben werden
For i = 0 To Me.ListBox1.ListCount - 1
wert = wert + Me.ListBox1.List(i, 3)          'Summe Betrag (Listbox1 Spalte 4)
wert1 = wert1 + Me.ListBox1.List(i, 2)        'Summe gefahrene km (Listbox1 Spalte 3)
wert2 = wert2 + Me.ListBox1.List(i, 4)        'Summe getankte Liter (Listbox1 Spalte 5)
wert3 = Range("H3")
Next i
Label1.Caption = Format(Round(wert, 2), "#,##0.00") & " Euro"
Label2.Caption = Format(Round(wert1, 2), "0") & " km"
Label3.Caption = Format(Round(wert2, 2), "#,##0.00") & " l"
Label4.Caption = Format(Round(Worksheets("Übersicht").Range("H3"), 2), "#,##0.00") & _
" l/100km"
End Sub
Diese Zeile wird vom Debugger markiert:
wert1 = wert1 + Me.ListBox1.List(i, 2) 'Summe gefahrene km (Listbox1 Spalte 3)
Alle anderen Monate funktionieren bestens. Keinen Ahnung warum das so ist.
Kann ich eigentlich auch das Jahr zum jeweiligen Monat mit einbauen in die CB oder brauch ich dann noch eine zweite CB? Das wäre praktisch, damit im nächsten Jahr nicht der Vorjahresmonat mit angezeigt wird.
Für eine Lösung bzw. einen Ansatz dazu wäre ich sehr dankbar.
PS:Bin jetzt paar Tage im Urlaub. Melde mich dann wenn ich zurück bin.
VG Uwe

Anzeige
und die Datei willst Du nicht schicken? owT...
13.08.2013 17:01:29
robert

AW: und die Datei willst Du nicht schicken? owT...
13.08.2013 21:25:29
Uwe
https://www.herber.de/bbs/user/86839.xlsm
Doch klar kein Problem.
Was bedeutet eigentlich owT?
VG und jetzt ist Urlaub für mich :-)
Uwe

Fertig-Dezember geht !
14.08.2013 08:42:44
robert
https://www.herber.de/bbs/user/86840.xlsm
Hi,
Bereich bis A1000 wirkt sich im Dezember aus, daher letzte Zeile in Spalte A ermitteln-schau ins Makro.
Gruß
robert

AW: Fertig-Dezember geht !
14.08.2013 11:16:48
Uwe
Riesigen Dank Robert für deine Hilfe.
VG Uwe

Gerne, schönen Urlaub-owT(ohneweiterenText)...
14.08.2013 11:38:17
robert

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige