spellsleeper Geschrieben 15. April 2014 Geschrieben 15. April 2014 Hallo, ich habe vor eine einfache Summenprüfung in VBA für Berichte zu schreiben. Aber schon bei der Parameterfestlegung scheint etwas nich funktioniert zu haben. Kann nur das erste Parameter eingeben! 'Funktion zur Prüfung von Summenfeldern - RttD 14.04.2014 'Param1:Summenfeld Param2:Felder die addiert werden Function PrüfSummenFeld(ByRef SummenFeld As Range, ByRef Felder() As Variant) Dim summeAngegeben As Double Dim summeErrechnet As Double Dim basisFeld As Range Dim basisFeldAdresse As String Dim diff As Double Dim err As String summeAngegeben = SummenFeld.Value basisFeld = Application.Caller basisFeldAdresse = basisFeld.AddressLocal err = basisFeldAdresse + " - Summe ist nicht korrekt!" For i = 1 To (UBound(Felder()) + 1) summeErrechnet = summeErrechnet + SummeRange(Felder(i)) Next i diff = summeAngegeben - summeErrechnet If diff > 0.01 Or diff < -0.01 Then PrüfSummenFeld = err Cells(basisFeld.Row, basisFeld.Column).Interior.ColorIndex = 3 'rot Else PrüfSummenFeld = basisFeldAdresse Cells(basisFeld.Row, basisFeld.Column).Interior.ColorIndex = 4 'grün End If End Function Function SummeRange(ByVal vBereich As Range) As Double Dim lZeilen As Long Dim lSpalten As Long Dim lZaehlerZeilen As Long Dim lZaehlerSpalten As Long Dim dSumme As Double lZeilen = vBereich.Rows.Count ' Die Anzahl Zeilen werden bestimmt lSpalten = vBereich.Columns.Count ' Die Anzahl Spalten werden bestimmt dSumme = 0 ' Wert Initialisieren, ist eigentlich in VBA bei erstmaliger Verwendung nicht notwendig, ' aber eine alte Gewohnheit For lZaehlerZeilen = 1 To lZeilen ' Hier werden die Werte in den einzelnen Zellen (Felder in den Ranges) aufsummiert For lZaehlerSpalten = 1 To lSpalten dSumme = dSumme + vBereich.Cells(lZaehlerZeilen, lZaehlerSpalten).Value Next lZaehlerSpalten Next lZaehlerZeilen SummeRange = dSumme End Function Ich bin normalerweise eher mit voll Objektorientierten Sprachen wie C#, Java und manchmal C++ am werkeln. Sieht hier vielleicht ein Basic-Spezi schon was bei den Parametern falsch gelaufen ist? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.