SUMIFS geht als Formel, aber nicht per VBA
18.04.2019 10:36:41
Harald
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