Parameterübergabe von Excel an Vb Funktion

Guten Tag,

ich möchte sehr gerne eine Text Variable von Excel aus an eine VB funkton übergeben. z. b. =Funktion(„hallo“) dieser soll dann in eine andere Zelle z.B. B2 kopiert werden. Irgendwie will das bei mir nicht funktionieren.
Ich gehe in den VB Editor, mache einen Doppelklick auf den Tabellenblatt Namen und schreibe:

Function TestFunktion(Text As String) As String

Range(„B2“).Value = Text

End Function

Excel sieht folgendermaßen aus:
A1 B1 C1 (=TestFunktion(B1))
operator Hallo #NAME?

Wieso will das Ding nicht funktionieren?
Hoffe, dass mir jemand weiterhelfen kann.

Vielen Dank und viele Grüße,
Ayla Asan

Hallo Ayla,

ich möchte sehr gerne eine Text Variable von Excel aus an eine
VB funkton übergeben. z. b. =Funktion(„hallo“) dieser soll
dann in eine andere Zelle z.B. B2 kopiert werden. Irgendwie
will das bei mir nicht funktionieren.

ich glaub du siehst da etwas falsch.
Du hast kein VB. Genauer gesagt hast du in deinem Excel.VB A nur eine Teilmenge des Umfanges von VB-Funktionen, plus Excel-spezielle VBA-Funktionen.

Deshalb verwirrst du nur die Leute wenn du sagst daß du VB hättest.
Du hast Excel-Vba.
Daß im VB-Editor in Excel zu lesen ist Vb6.0 oder VB5.0, das hängt von der Excelversion die du hast ab.

Solange du im Code reinrassige VB-Befehle benutzt kannst du theoretisch den Code wahlweise gleichgut in VB, Excel,Word,Corel Draw und den sonstigen 30 MS-Programmen die VBA haben benutzen.
Vorausgestzt, alle benutzten VB-Befehle sind in der Jeweilgen VBA-Version auch enthalten.

Insofern sieht man manchen Codes nicht leicht an für was sie eigentlich gedacht sind. Deiner Funktion sieht man es sofort an.
Denn Range(„B2“) gibt es weder in VB noch in Word-VBA, aber in Excel-VBA.

Zumnindest mit großer Wahrscheinlichkeit. Um es zu 100% sagen zu können müßre ich natürlich ausschließen können daß in einer anderen 30 VBA-Versionen nicht doch auch Range(„B1“) gibt :smile:)

Ich gehe in den VB Editor, mache einen Doppelklick auf den
Tabellenblatt Namen und schreibe:

Schon mal falsch.
Dorthinein gehören keine Standardfunktionenoder Subs.

Klicke auf Einfügen und füge ein Modul ein. Dorthinein gehört die Function.

Function TestFunktion(Text As String) As String
Range(„B2“).Value = Text
End Function

Geht so nicht.
Eine Funktion liefert einen Wert zurück, direkt in eine Zelle schreiben, gar noch eine fremde, das geht nicht.

Function TestFunktion(Text As String) As String
TestFunktion = Text
End Function

wäre schon besser, aber immer noch falsch.
Denn beim Aufruf in Excel mit
=TestFunktion(B1))
übergibst du die Zelle B1 als Bereich, also als Range und nicht als Textwert.

Function TestFunktion(Zelle As Range) As String
TestFunktion = Zelle.Text
End Function

müßte klappen. Wenn nicht, melde dich dann kann man noch mal genauer schauen.

Gruß
Reinhard

Hi Reinhard,

alles klar, vielen Dank.

Gruß,
Ayla