Prinzipiell ist das ok, vor allem, wenn Du noch Parameter uebergeben willst (geht ja mit HotKeySet nicht).
Wobei ich persönlich finde, dass man es mit dem vermeiden von globalen Variablen auch übertreiben kann.
Natürlich sollten globale Variablen in UDFs nicht $i, $x, $y oder auch $iWidth oder so heißen, das führt zwangsläufig zu Problemen, aber wenn man die globalen Variablen zum Beispiel $g_iUDFnameWidth nennt, dann dürfte das kaum zu Namenskollisionen führen.
Und wenn man dann die globalen Variablen oben in der UDF gut sichtbar deklariert und kommentiert, dann kann man sich beim verwenden der UDF auch gut darauf einstellen.
Mir ist das lieber, als "wilde" Konstruktionen, die versuchen globale Variablen zu umgehen und damit den Code unleserlicher machen.
Wie gesagt, ist das meine persönliche Meinung dazu.