VBA Funktionen in Kombinationen mit Excel Namen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: VBA Funktionen in Kombinationen mit Excel Namen
von: JOGO
Geschrieben am: 29.09.2015 15:46:22

Hallo,
ich bin seit langem auf der Suche nach einer Lösung für folgendes Problem.
Ich kann z.B. eine Funktion verfassen

Public Function test(a)
   test = a ^ 2
 End Function

und diese in Excel dann benutzen "=test(A2)".
Als Ingenieur will man aber alles schön ordentlich und möchte z.B. die ganze Spalte A als Namen z.B. v_wind definieren. Weil dann v_wind ein array ist, geht das dann nicht mehr (es sei denn mit irgendwelchen tricks, die das dann unübersichtlich machen (z.B. "=test(index(v_wind,1))").
Hat jemand eine schöne Lösung, z.B. Arrayerkennung mit VBA o.Ä.?
Ein Dankeschön schonmal vorneweg und Grüße
Johannes

Bild

Betrifft: AW: VBA Funktionen in Kombinationen mit Excel Namen
von: ChrisL
Geschrieben am: 29.09.2015 15:55:27
Hi

Function test(a)
If IsArray(a) Then
    MsgBox "Array"
Else
    MsgBox "kein Array"
End If
End Function
cu
Chris

Bild

Betrifft: AW: VBA Funktionen in Kombinationen mit Excel Namen
von: Daniel
Geschrieben am: 29.09.2015 15:58:25
Hi
du kannst mit VarType(a) abfragen, was dir der Anwender als a übergeben hat und dann differenziert reagieren, je nachdem ob du einen Einzelwert oder ein Array erhalten hast.
Gruß Daniel

Bild

Betrifft: AW: VBA Funktionen in Kombinationen mit Excel Namen
von: fcs
Geschrieben am: 29.09.2015 16:31:46
Hallo Johannes,
folgendes könnte funktionieren, ist aber auch nicht so ganz in deinem Sinne von ingeneurmäßiger Schönheit.
=test(index(v_wind,Zeile()-Zeile(v_wind)+1)))
Was du machen könntes: Wandle den Zellbereich inkl. der Spalten-Titel in eine Tabelle um.
Dann kann man in den Formeln bei Bedarf mit den Spaltentiteln arbeiten.
Userbild
Gruß
Franz

Bild

Betrifft: AW: VBA Funktionen in Kombinationen mit Excel Namen
von: Rudi Maintaire
Geschrieben am: 30.09.2015 13:11:41
Hallo,

Function test(a, Optional z As Long)
  If IsArray(a) Then
    test = a(z, 1) ^ 2
  Else
    test = a ^ 2
  End If
End Function
ABC
2244
3399
441616
552525
663636

NameBezug
v_wind=Tabelle2!$A:$A

ZelleFormel
B2=test(v_wind;ZEILE())
C2=test(A2)

Gruß
Rudi

Bild

Betrifft: Wie man so etwas generell machen kann, ...
von: Luc:-?
Geschrieben am: 01.10.2015 01:13:53
…Johannes,
findest du hier.
Gruß, Luc :-?

Besser informiert mit …

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Funktionen in Kombinationen mit Excel Namen"