Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1684to1688
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
SUMIFS geht als Formel, aber nicht per VBA
18.04.2019 10:36:41
Harald
Hallo zusammen,
ich hänge momentan an einem Problem mit einer Auswertung von Rechnungen, die ich in einer Userform abrufe. Dabei funktioniert die SumIfs - Funktion prima, sobald ich aber das Ganze mit einem Datum eingrenzen möchte, funktioniert die Funktion nicht mehr.
So sieht der Code aus:
'bestellte Summe der Projekte
With Application.WorksheetFunction
SumAng = .SumIfs(shprojekte.Range("W:W"), _
shprojekte.Range("AD:AD"), Me.lst_Kategorien.Value, _
shprojekte.Range("A:A"), Me.Controls("lbl_" & i), _
shprojekte.Range("Z:Z"), ">=" & shhilfe.Range("A1").Value, _
shprojekte.Range("Z:Z"), " End With
Diese Formel funktioniert nicht. Zeitgleich funktioniert aber diese Formel im Excel-Blatt, die ich als Kontrolle eingefügt habe:
=SUMMEWENNS(Projekte!$W:$W;Projekte!AD:AD;"="&Übersicht!F32;Projekte!A:A;"="&Übersicht!F33; Projekte!Z:Z;"="&Übersicht!F34)
Die Daten, die diese Formel bekommt, sind analog zu denen, die ich per VBA abrufe. Der obere Teil der VBA-Formel funktioniert auch definitiv, wo es hapert ist dieser Teil:
shprojekte.Range("Z:Z"), ">=" & shhilfe.Range("A1").Value, _
shprojekte.Range("Z:Z"), " In der betreffenden Zelle A1 steht z.B. 01.01.2019, in A2 18.04.2019.
Versucht habe ich schon das Ganze in eine Variable zu schreiben. Ich habe dazu 2 Variablen ("Datumvom" und "Datumbis") als "Date" dimensioniert und anstatt das Datum aus dem Label in die Zellen zu schreiben eben dort hinein zu schreiben. Ich habe dann die Variablen in den Code eingefügt - aber ohne Erfolg.
Hier ist der gesamte Code der Funktion:

Function Kategorien()
Dim wb As Workbook, shprojekte, shhilfe As Worksheet
Dim suchtext As Range
Dim Anzahl As Integer
Dim SumAng As Long
Dim i As Integer
Set wb = ThisWorkbook
Set shprojekte = wb.Sheets("Projekte")
Set shhilfe = wb.Sheets("Hilfsblatt")
shhilfe.Range("A1") = Me.lbl_vom.Caption
shhilfe.Range("A2") = Me.lbl_bis.Caption
'Schleife
For i = 1 To 6
'Anzahl der Projekte
With Application.WorksheetFunction
Anzahl = .CountIfs(shprojekte.Range("AD:AD"), Me.lst_Kategorien.Value, _
shprojekte.Range("A:A"), Me.Controls("lbl_" & i))
End With
With Me.Controls("lbl_0" & i)
.Caption = Anzahl
End With
'Angebotssumme der Projekte
With Application.WorksheetFunction
SumAng = .SumIfs(shprojekte.Range("R:R"), _
shprojekte.Range("AD:AD"), Me.lst_Kategorien.Value, _
shprojekte.Range("A:A"), Me.Controls("lbl_" & i))
End With
With Me.Controls("lbl_1" & i)
.Caption = Format(SumAng, "#,##0€;(#,##0€)")
End With
SumAng = 0
'bestellte Summe der Projekte
With Application.WorksheetFunction
SumAng = .SumIfs(shprojekte.Range("W:W"), _
shprojekte.Range("AD:AD"), Me.lst_Kategorien.Value, _
shprojekte.Range("A:A"), Me.Controls("lbl_" & i), _
shprojekte.Range("Z:Z"), ">=" & shhilfe.Range("A1").Value, _
shprojekte.Range("Z:Z"), "
Hat jemand von euch eine Idee, warum die Formel immer "0" ausgibt und nicht korrekt rechnet? Danke! :)
Harry

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SUMIFS geht als Formel, aber nicht per VBA
18.04.2019 10:44:51
Werner
Hallo Harald,
wenn die "Datumswerte" vom Caption eines Labels in die Zelle kommen
shhilfe.Range("A1") = Me.lbl_vom.Caption

und so sieht das hier ja aus, dann steht in A2 kein echtes Datum sondern ein Text, der wie ein Datum aussieht.
Versuch mal beim Sumifs
..."
Gruß Werner
AW: SUMIFS geht als Formel, aber nicht per VBA
18.04.2019 11:05:27
Daniel
Hi
probier mal das:
 shhilfe.Range("A1") = CDate(Me.lbl_vom.Caption)
shhilfe.Range("A2") = CDate(Me.lbl_bis.Caption)
dann sollte es funktionieren.
das Problem ist, dass dein Excel "deutsch" arbeitet und VBA "amerikanisch"
dh als Text vorliegende Datumswerte werden nur dann als Datum erkannt, wenn sie in der jeweiligen Schreibweise vorliegen, dh für Excel im deutschen "TT.MM.JJJJ", für VBA im amerikanischen "MM/TT/YYYY".
somit passt dann der deutsch Text nicht für die Bedingung im Worksheetfunction.CountIf
mit dem CDate kommt das Datum dann nicht als Text, sondern als echtes Exceldatum uns somit als Zahlenwert in die Zelle, das funktioniert dann unabhängig von der Sprache.
Gruß Daniel
Anzeige
da hast du natürlich recht...
19.04.2019 13:29:43
Werner
Hallo Daniel,
...das Problem schon gleich am Beginn anzupacken anstatt wie ich am Ende.
Gruß und happy Eastern
Werner
AW: SUMIFS geht als Formel, aber nicht per VBA
24.04.2019 09:40:47
Harald
Guten Morgen,
vielen Dank für den Input, aber leider funktionieren beide Methoden nicht.
Nehme ich das CDate hier oben rein:
shhilfe.Range("A1") = CDate(Me.lbl_vom.Caption)
shhilfe.Range("A2") = CDate(Me.lbl_bis.Caption)
Erhalte ich einen "Typen unverträglich" Fehler.
Mein Ansatz geht momentan dahin, dass es am Label an sich liegt. Ich habe jetzt aus den Labels Textfelder gemacht und probiere es damit nochmal - er erkennt im Direktfenster auf jeden Fall, dass ein Datum dort drin steht:
?frm_Projekte.lbl_vom.Value
01.01.2019
?frm_Projekte.lbl_bis.Value
24.04.2019
(bitte nicht von der Bezeichnung verwirren lassen - das ist nur Testweise und ich wollte nicht viel Code umschreiben, sondern ihn erstmal zum Laufen bringen).
Leider bleibt das Problem nach wie vor. Meine Sumifs Formel möchte einfach das Datum nicht mit einbeziehen, egal, ob Label oder Textfeld. Egal, ob als CDate formatiert, oder nicht...
Anzeige
AW: SUMIFS geht als Formel, aber nicht per VBA
24.04.2019 12:05:10
Harald
Hallo zusammen,
ich habe nun aus dem CDate ein Clng gemacht - und schon kann Excel rechnen. Warum er vorher mit den als Datum angezeigten Daten nicht rechnen konnte, verstehe ich nicht... ich habe das Ganze jetzt so gelöst, dass ich die normale Datumsform vorne einblende, intern aber mit 2 versteckten, als Zahl gespeicherten Werten rechne.
Natürlich weiß ich, dass hinter jedem Datum eine Zahl steht. Trotzdem hätte Excel auch mit dem Datum rechnen können sollen. Warum er das nicht tat, weiß ich nicht.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige