UDF: aktuelle Zelladresse nutzen

Zeile, Spalte oder Adresse der aktuellen Zelle einer UDF 

Mitunter ist es wünschenswert, von einer selbst definierten Funktion die komplette Adresse oder Teile davon in eine Variable zu speichern. Die Angabe ActiveCell.Address scheint auf den ersten Blick zielführend zu sein, aber das täuscht. Im folgenden Code werden vier Variablen die entsprechenden Werte zugewiesen:

Dim AdresseAbsolut as String, AdresseRelativ as String
Dim Zeile as Integer, Spalte as Integer

AdresseAbsolut = Application.Caller.Address
AdresseRelativ = Application.Caller.Address(0, 0)
Zeile = Range(Application.Caller.Address).Row
Spalte = Range(Application.Caller.Address).Column

Eine Beispielanwendung könnte so aussehen:

  • In einer Tabelle stehen in Spalte C jeweils in einer Zelle Namen, teilweise mit aber auch ohne Vorname.
  • Die unterschiedlichen Personen sind durch ein Komma getrennt.
  • Solche Personengruppen sind in mehreren Zeilen zu finden.
  • In unterschiedlichen Spalten soll per Benutzerdefinierter Funktion (UDF) berechnet werden, wie viele Namen in Spalte C der gleichen Zeile enthalten sind.

Wäre es immer die gleiche Spalte, wo die Ergebnisse ausgegeben werden sollen, dann könnte ja die Offset-Funktion zum tragen kommen. So aber muss ein anderer Weg beschritten werden …

Function AnzNamen() As Integer
   Dim Ze As Long, Sp As Integer

   Application.Volatile
   Sp = 3   'Spalte C
   Ze = Range(Application.Caller.Address).Row
   AnzNamen = UBound(Split(Cells(Ze, Sp), ",")) + 1
End Function

▲ nach oben …

Dieser Beitrag wurde unter Code-Schnipsel, Tabelle und Zelle abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.