miniversum
Goto Top

Variableninhalt anhand des Variabelnnamens erhalten

Hallo
Ich schreibe an einem Macro in vba unter Excel 2003.
Dort benötige ich ene Funktionalität die mir den Inhalt einer Variable anhand ihres Variabelnnamens liefert.
Versucht hab ich shconmal folgendes:
var1 = "hallo"  
var2 = "var1"  

Evaluate "var3=" & var2  
MsgBox var3
und
var1 = "hallo"  
var2 = "var1"  

var3 = Evaluate(var2)
MsgBox var3
In beiden Fällen sollte eigentlich als Ihnahlt von var3 = "Hallo" stehen.
Beides Funktioniert nicht.
Ich habe auch schon Varianten mit "ExecoteExcel4Macros" und "VarPtr", was aber auch nicht funktionierte.

Im Prinzip suche ich das entsprechende zu "Application.Run" wo man ja auch ein Funktionsname als String angeben kann, nur eben für (String-)Variabeln.

Ich hoffe das mein Vorhaben einigermasen verständlich erklärt ist. Wenn nicht ganz klar einfach nachfragen.
miniversum

Content-Key: 104824

Url: https://administrator.de/contentid/104824

Printed on: July 16, 2024 at 14:07 o'clock

Member: bastla
bastla Dec 28, 2008 at 19:03:29 (UTC)
Goto Top
Hallo miniversum!

In VBS würde
var1 = "hallo"  
var2 = "var1"  

var3 = Eval(var2)
MsgBox var3
funktionieren, aber für VBA habe ich leider auch keinen Lösungsvorschlag. face-sad

Vielleicht könntest Du für die gewünschte Funktionalität ein "Dictionary" verwenden:
Set d = CreateObject("Scripting.Dictionary")  
d.Add "var1", "hallo"  

var2 = "var1"  

var3 = d.Item(var2)
MsgBox var3
Grüße
bastla
Member: miniversum
miniversum Dec 29, 2008 at 14:38:25 (UTC)
Goto Top
Danke für die Antwort.
Das mit Directory geht schon in die Richtung. Aber es ist auch nicht ganz das was ich benötige.
Vielleicht wars auch ein blödes Beispiel.
Mal anders erklärt bräuchte ich eine Funktion die mir bei:
Dim var1 As String

var1 = "Range(""E1"").Text"  
MsgBox mache(var1)

var1 = """Hallo"""  
MsgBox mache(var1)
das ausgibt was in Zelle E1 steht oder Eben das Hallo. Also den befehl ausführt der im String angegeben ist.
nur welcher Befehl dieses "mache" ist weiß ich eben nicht.

Das Eval hab ich mal versucht indem ich einen Verweiß auf die Microsoft Scripting Komponente gemacht habe. Das hat aber auch nicht funktioniert.