Start Hilfe und Support Microsoft Office EXCEL 2010 VBA: Anzahl Zeilen und Spalten eines Range-Objektes bestimmen

EXCEL 2010 VBA: Anzahl Zeilen und Spalten eines Range-Objektes bestimmen

E-Mail PDF

Wie viele Zeilen und Spalten hat ein Rangeobjekt?

Schreibt man selbst Funktionen für eine EXCEL-Tabelle und erweitert somit den Funktionsumfang von EXCEL, ist es oftmals angezeigt, direkt Bereiche (Range) aus einer EXCEL-Tabelle an eine Funktion zu übergeben, um dann innerhalb der Funktion mit den Inhalten des übergebenen Bereichs weiterarbeiten zu können.

In diesem Artikel wird die Summenfunktion, die EXCEL zugegebenermaßen schon bietet, nachempfunden. Das ist ein transparentes, nachvollziehbares Beispiel und dann in der Folge dazu geeignet, an die eigenen Zwecke angepasst zu werden.

Aufgabenstellung

Für den folgenden Bereich soll eine Summe berechnet werden, innerhalb der Funktion muss die Anzahl Zeilen und Spalten des Range-Objektes ermittelt werden, da eine Übergabe von Bereichen aus der Tabelle heraus flexibel erfolgen kann:

summenbereich

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 und somit ist das Rätsel der Ermittlung von der Anzahl von Zeilen und Spalten einer Range gelöst.

  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 und der Funktion "MeineSumme" als Rückgabewert übergeben werden.

  For lZaehlerZeilen = 1 To lZeilen  ' Hier werden die Werte in den einzelnen Zellen aufsummiert
    For lZaehlerSpalten = 1 To lSpalten
     dSumme = dSumme + vBereich.Cells(lZaehlerZeilen, lZaehlerSpalten).Value
    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
      dSumme = dSumme + vBereich.Cells(lZaehlerZeilen, lZaehlerSpalten).Value
    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. Bitte lesen Sie auch den Artikel Die Verwendung von ParamArray, das Beispiel wird in diesem Artikel erweitert, so dass die Funktion schon fast so arbeitet wie die SUMME von EXCEL.


Zuletzt aktualisiert am Montag, den 04. November 2013 um 19:41 Uhr  


Machen Sie mit

Sie haben noch alte Bilder gefunden über Happerschoß und Umgebung. Es wäre schön, wenn Sie diese zur Verfügung stellen, so dass viele daran Freude haben und sich vielleicht an alten Zeiten erinnern können. Bitte melden Sie sich! Gehen Sie bitte direkt über die Kontaktseite und schreiben Sie eine Nachricht. Es geht natürlich auch mit einer Mail an Info@happerschoss.net. Natürlich sind auch alte Negative und Dias (farbig oder schwarz/weiß) willkommen, ganz gleich in welchem Format (Kleinbild, 6x6 oder auch von einer Plattenkamera), ein bearbeiteter und schöner Abzug von Ihrem Bild ist Ihnen versprochen. Danke für Ihre Mithilfe!