Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VBA Summenprüfung für Excel

Empfohlene Antworten

Veröffentlicht

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?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.