Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA Summen im Formular nach Datum /Namen
27.02.2021 13:28:08
Hardy
Hallo,
in einer Arbeitsmappe habe ich eine Tabelle (Nr.4) mit variabler Länge und 36 Spalten.
in der Spalte A stehen Datumsangaben (ein Datum kann mehrfach vorkommen) und in der Spalte C stehen Namen und in der Spalte F stehen Beträge.
Ich möchte jetzt folgendes,
1. in einem Formular habe ich 12 TextBoxen Januar bis Dezember
die sollen mit den Summen der einzelnen Monate gefüllt werden.
2. wenn ich jetzt im Formular einen Namen in einer ComboBox wähle, sollen
nur die Summen der Person in die Monats TextBoxen eingetragen werden
Ich hab schon geschaut aber ich finde irgenwie nicht die richtige Lösung .
Kann jemand helfen ?
Gruß Hardy

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Summen im Formular nach Datum /Namen
27.02.2021 15:00:54
Werner
Hallo,
den dicken, fetten, roten Hinweis beim Erstellen deines Beitrages hast du gesehen?
Gruß Werner

AW: VBA Summen im Formular nach Datum /Namen
27.02.2021 20:10:35
Hardy
Hallo, ich bins nochmal :)
ich habe das Problem mal aufgesplittet.
Also ich habe eine Tabelle mit einer Spalte Datum und einer Spalte Summe.
Ich möchte jetzt im Formular das die Beträge nach Datum (Monat)
aufsummiert und eingetragen werden.
Die Spalte Datum ist nicht sortiert.
Also vom logischen ist mir das klar…
Schaue in der Spalte A Datum nach dem Monat und addiere solange der Monat z.b. 01.ist
und trage dann bei Ende die Summe in die jeweilige Textbox ein.
Aber ich komme einfach nicht drauf.
Vielleicht kann jemand helfen
Gruß Hardy
Beispiel :
https://www.herber.de/bbs/user/144294.xlsm

Anzeige
AW: VBA Summen im Formular nach Datum /Namen
28.02.2021 08:46:42
Werner
Hallo,
hier mal der Code:
Option Explicit
Private Sub ComboBox1_Change()
Dim i As Long, loLetzte As Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
If Me.ComboBox1  "" Then
For i = 1 To 12
Me.Controls("TextBox" & CStr(i)) = _
Evaluate("=SUMPRODUCT((MONTH(A2:A" & loLetzte & ")=" & i & ")*((B2:B" _
& loLetzte & ")=""" & Me.ComboBox1 & """)*(C2:C" & loLetzte & "))")
Next i
Else
Call UserForm_Initialize
End If
End Sub
Private Sub UserForm_Initialize()
Dim varValues As Variant, varItem As Variant
Dim objDictionary As Object, i As Long, loLetzte As Long
Set objDictionary = CreateObject("Scripting.Dictionary")
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Row
varValues = .Range("B2:B" & loLetzte)
For Each varItem In varValues
objDictionary.Item(varItem) = vbNullString
Next
Me.ComboBox1.List = objDictionary.Keys
For i = 1 To 12
Me.Controls("TextBox" & CStr(i)) = _
Evaluate("=SUMPRODUCT((MONTH(A2:A" & loLetzte & ")=" _
& i & ")*(C2:C" & loLetzte & "))")
Next i
End With
Set objDictionary = Nothing
End Sub
In deiner Userform die Textboxen bitte umbenennen und zwar von TextBox1 (Januar) bis TextBox12 (Dezember) forlaufend.
Die ComboBox fülle ich über ein Dictionary. Ein Dictionary kann keine doppelten Werte aufnehmen. Das hat den Vorteil, dass du dann die Namen in Spalte B nicht mehrfach in der ComboBox hast.
Beim Laden der Userform werden die Monatsbeträge in den entsprechenden TextBoxen angezeigt. Wählst du einen Namen in der ComboBox aus, dann sind in den TextBoxen die Monatsbeträge der entsprechenden Person.
Löschst du den Eintrag in der ComboBox, dann werden dir wieder die Monatsbeträge in den TextBoxen angezeigt.
Gruß Werner

Anzeige
AW: VBA Summen im Formular nach Datum /Namen
28.02.2021 10:17:46
Herbert_Grom
Hallo Hardy,
Werners Vorschlag passt schon, ich habe nur die Nummerierung der Textboxen angepasst.
https://www.herber.de/bbs/user/144298.xlsm
Servus

AW: VBA Summen im Formular nach Datum /Namen
28.02.2021 10:54:24
Werner
Hallo Herbert,
das habe ich dem TE aber geschrieben, dass er die Textboxen anpassen muss.
Ich denke, ihn das selbst machen zu lassen ist jetzt nicht zu viel verlangt.
Gruß Werner

AW: VBA Summen im Formular nach Datum /Namen
28.02.2021 10:56:45
Herbert_Grom
Hallo Werner,
da hast du natürlich recht. Ich habe das halt gesehen und dann automatisch korrigiert. Und dann kann er es auch haben. Und ich hatte auch was sinnvolles zu tun. Vor allem wollte ich deinen Code ausprobieren! ;o)=)
Servus

Anzeige
passt schon...
28.02.2021 11:18:59
Werner
Hallo Herbert,
...alles gut.
Ich hätte das auch gemacht und ihm die Datei komplett hochgeladen. Kann ich aber im Moment von hier aus an meinem Arbeitsblattrechner nicht.
Gruß Werner

AW: passt schon...
28.02.2021 11:30:36
Herbert_Grom
Hallo Werner,
ja so weit kommt es noch, dass du dich auch noch dafür entschuldigst. Du hast doch völlig recht, dass das dem Fragenden zuzumuten ist, dass er das selbst macht. Ich hatte nur deinen Hinweis nicht gelesen/realisiert und dann das Fehlende ergänzt. So hatte ich wenigstens auch eine sinnvolle Aufgabe am Sonntag morgen! Und das ist für mich als Rentner ja auch ganz wichtig. Hättest du das schon gemacht, wäre mir mal wieder nix geblieben! Also, danke, dass du es nicht gemacht hast! Von wegen sich auch noch entschuldigen!!! ;o)=)
Servus

Anzeige
AW: passt schon...
28.02.2021 11:39:03
Hardy
Hallo ihr beiden,
erstmal DANKE :)
Ich bin jetzt erst seit ein paar Wochen in der VB Programmierung unterwegs
und das auch nur am Wochenende und nach Feierabend.
Dementsprechend tue ich mich da noch etwas schwer mit, vorallendingen mit der Syntax.
Aber wird :)
Ich hab da auch schon jetzt einiges hinbekommen, Berechnungen und Eingabemasken mit Abfragen etc, aber da ging es jetzt nicht weiter.
Ich werde den Code jetzt mal einbauen und anpassen , aber das passt 100% :)
Viele Grüße Hardy

AW: passt schon...
28.02.2021 11:42:31
Herbert_Grom
Hallo Hardy,
ich bin ja auch erst seit ein "paar" Wochen in der VBA-Programmierung unterwegs: Rund 1400! ;o)=)
Also, nur Geduld! Und dran bleiben!
Servus

Anzeige
AW: passt schon... Noch eine Frage...
28.02.2021 13:26:50
Hardy
Hallo,
sorry aber ich hätte da noch mal eine Frage ..
Also ich hab den Code bei mir eingebunden und angepasst.
Läuft auch .. bis auf es werden nur 0 Werte ausgegeben.
Jetzt hab ich mal die Beispiel Datei von euch einmal mit den Spalten angepasst wie bei mir.
Läuft ..
Dann habe ich in der Beispieldatei die Textboxen nicht von 1-12 sondern von 85-96 umbenannt
wie in meinem Programm, jetzt werden dan auch dort Nullwerte angezeigt.
Angepasst habe ich natürlich For i = 1 To 12 nach For i = 85 To 96
aber ich denke da habe ich einen Denkfehler oder ?
Hintergrund ist das ich in dem Formular mehrere Felder mit den Jahres-Monaten habe
(Barsumme , EC Karte etc. )
Viele Grüße Hardy

Anzeige
AW: passt schon...
28.02.2021 13:37:11
Hardy
Noch einmal die Datei
https://www.herber.de/bbs/user/144304.xlsm
die einzelnen EC Zahlungen etc bekomme ich dan schon selber hin ;)
die Frage ist jetzt For i = 1 To 12 bzw. dann für EC-Zahlungen For i = 13 To 24 kann ich dann ja so nicht einsetzten ?
Viele Grüße Hardy

AW: passt schon...
28.02.2021 14:21:19
Hardy
ist dieser Ansatz richtig ? Funktioniert nur noch nicht..
Eine weitere Variable die dan der Textbox Nr zugewiesen wird
tb = 85
For i = 1 To 12
Me.Controls("TextBox" & CStr(tb)) = _
Evaluate("=SUMPRODUCT((MONTH(E2:E" & loLetzte & ")=" _
& i & ")*(AH2:AH" & loLetzte & "))")
tb = tb + 1
Next i
Gruß Hardy

Anzeige
AW: passt schon...
28.02.2021 15:35:58
Hardy
Ich schon wieder :)
Also alles hinbekommen bis auf eins.
Ich hab zwar die richtige Tabelle angegeben aber anscheinend nimmt er sie nicht.
Ruf ich die Verarbeitung vom Tabellenblatt mit den Daten auf , alles io
Ruf ich die Verarbeitung vom anderen Tabellenblatt auf sind die Werte null.
Hier mal die Arbeitsmappe mit 2 Tabellen und natürlich 2 Aufrufen
https://www.herber.de/bbs/user/144308.xlsm
Gruß Hardy

AW: passt schon...
28.02.2021 17:29:42
Herbert_Grom
Hallo Hardy,
in "Combobox1_Change" steht u. a. "AH2:AH" & iLastRow". Doch in "AHxxx" staht nix! Was würde da im Original stehen?
Servus

Anzeige
AW: passt schon...
28.02.2021 17:33:17
Hardy
Hallo,
in AH stehen die Summen.
Ich habe gerade extra die Datei nochmal runtergeladen und nachgesehen in Tabelle 1 (sind jetzt 2 )
steht in AH die Summen.
Viele Grüße Hardy

AW: passt schon...
28.02.2021 17:58:41
Hardy
Hy
super danke :) :) !!!
Ich hatte da schon eine Lösung aber die war nicht wirklich prickelnd :(
und zwar hatte ich
Application.Worksheets("Tabelle1").Activate
explizit davor gesetzt
und zum Schluss dann wieder das Formular mit den Menüpunkten auf Activ gesetzt.
Aber so ist das viel besser :)
Danke und noch einen schönen Sonntag
Gruß Hardy

Anzeige
AW: Gerne geschehen und danke für die Rückmeldung!
28.02.2021 18:23:20
Herbert_Grom
,,,

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige