UDF: aktuelle Zelladresse nutzen

Zeile, Spalte oder Adresse der aktuellen Zelle einer UDF 

Mitunter ist es wün­schenswert, von ein­er selb­st definierten Funk­tion die kom­plette Adresse oder Teile davon in eine Vari­able zu spe­ich­ern. Die Angabe ActiveCell.Address scheint auf den ersten Blick zielführend zu sein, aber das täuscht. Im fol­gen­den Code wer­den vier Vari­ablen die entsprechen­den 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 Beispielan­wen­dung kön­nte so ausse­hen:

  • In ein­er Tabelle ste­hen in Spalte C jew­eils in ein­er Zelle Namen, teil­weise mit aber auch ohne Vor­name.
  • Die unter­schiedlichen Per­so­n­en sind durch ein Kom­ma getren­nt.
  • Solche Per­so­n­en­grup­pen sind in mehreren Zeilen zu find­en.
  • In unter­schiedlichen Spal­ten soll per Benutzerdefiniert­er Funk­tion (UDF) berech­net wer­den, wie viele Namen in Spalte C der gle­ichen Zeile enthal­ten sind.

Wäre es immer die gle­iche Spalte, wo die Ergeb­nisse aus­gegeben wer­den sollen, dann kön­nte ja die Off­set-Funk­tion zum tra­gen kom­men. So aber muss ein ander­er Weg beschrit­ten wer­den …

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
[NachOben­Let­zte Verweis=„CS: Zel­ladresse Aufruf UDF”]
Dieser Beitrag wurde unter Code-Schnipsel, Tabelle und Zelle abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.