Start Hilfe und Support Microsoft Office EXCEL 2010 VBA: Zahlen mit IsNumeric() identifizieren

EXCEL 2010 VBA: Zahlen mit IsNumeric() identifizieren

E-Mail PDF

Enthält die Variable einen Zahlenwert - IsNumeric() gibt Auskunft

Kontext

Von einem Bereich/Range soll die Summe gebildet werden, dabei ist vorab zu prüfen, ob der Inhalt eines Feldes/einer Zelle ein numerischer Wert ist.

Aufgabenstellung

Für den folgenden Bereich soll eine Summe berechnet werden, nicht numerische Werte werden ausgeschlossen.

beispiel_isnumeric

Der Aufruf der EXCEL-Summe ist einfach: In Zelle B17 (verbundene Zelle) befindet sich die Funktion =SUMME(A2:D15).

Für die eigne Berechnung der Summe sind Vorarbeiten in VBA notwendig. Es ist eine Funkton zu schreiben, die ich hier "MeineSumme" nenne.

Entwicklung einer eigenen Summenfunktion

Begonnen wird mit der Definition der Funktion "MeineSumme", die dann aus der Tabelle heraus als Funktion verwendet werden kann. Als Übergabeparameter wird eine Range erwartet, die auf den Namen "vBereich" hört.

Function MeineSumme(ByVal vBereich As Range) As Double
...
End Function

 

Folgende Variablen werden in der Funktion verwendet und zu Beginn der Funktion bekannt gemacht und typisiert (Definition der Vartiablenart wie Ganzzahl, Text, reelle Zahl etc).

  Dim lZeilen As Long
  Dim lSpalten As Long

  Dim lZaehlerZeilen As Long
  Dim lZaehlerSpalten As Long
  Dim dSumme As Double

 

Die beiden folgenden Zeilen ermitteln die Anzahl Zeilen und Spalten der Range.

  lZeilen = vBereich.Rows.Count  ' Die Anzahl Zeilen werden bestimmt
  lSpalten = vBereich.Columns.Count  ' Die Anzahl Spalten werden bestimmt

 

Jetzt muss  nur noch die Summe gerechnet werden, dabei werden mit IsNumeric() alle Nicht-numerischen Werte herausgefiltert. Die Funktion IsNumeric() liefert als Ergebnis ein Boolean. Handelt es sich um eine Zahl, liefert IsNumeric() als Ergebnis True, ansonsten False. Im Anschluss wird der Funktion "MeineSumme" der Rückgabewert dSumme übergeben.

  For lZaehlerZeilen = 1 To lZeilen  ' Hier werden die Werte in den einzelnen Zellen aufsummiert
    For lZaehlerSpalten = 1 To lSpalten
      If IsNumeric(vBereich.Cells(lZaehlerZeilen, lZaehlerSpalten).Value) Then ' IsNumeric() prüft, ob es sich um eine

                                                                               ' Zahl handelt
        dSumme = dSumme + vBereich.Cells(lZaehlerZeilen, lZaehlerSpalten).Value
      End If
    Next lZaehlerSpalten

  Next lZaehlerZeilen

  MeineSumme = dSumme

Hier noch einmal der Programmcode im Zusammenhang

Function MeineSumme(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 aufsummiert
    For lZaehlerSpalten = 1 To lSpalten
      If IsNumeric(vBereich.Cells(lZaehlerZeilen, lZaehlerSpalten).Value) Then ' IsNumeric() prüft, ob es sich um eine

                                                                               ' Zahl handelt
        dSumme = dSumme + vBereich.Cells(lZaehlerZeilen, lZaehlerSpalten).Value
      End If
    Next lZaehlerSpalten

  Next lZaehlerZeilen

  MeineSumme = dSumme ' Übergabe des Summenergebnisses an das Rückgabeergebnis von MeineSumme

End Function

Aufruf der Funktion "MeineSumme"

Der Aufruf dieser Funktion erfolgt analog dem Aufruf der Funktion =SUMME(A2:D15), nämlich mit =MeineSumme(A2:D15). In der Beispieltabelle befindet sich diese Funktion in Zelle B16.

Beispiel zum Download

Hier konnen Sie sich das Beispiel herunterladen.


Zuletzt aktualisiert am Montag, den 04. November 2013 um 18:39 Uhr  


Machen Sie mit

Sie haben ein schönes Bild gemacht von Happerschoß, das auch andere interessieren könnte. Dann sollte es auf dieser Internetseite von Happerschoß erscheinen. Bitte melden Sie sich direkt über die Kontaktseite oder natürlich auch unter Info@happerschoss.net.