PDA

Vollständige Version anzeigen : Code aus Textfeld Ausführen?


Humml
20.01.2008, 07:38
Hallo
Gib es die Möglichkeit in einem Textfeld stehenden Code zum Beispiel :)
Dim i As Integer
i = 1
If i = i Then
MsgBox "klar i ist ja immer eins"
End If

auszuführen


Danke für jeden Tipp oder eventuell Umweg so was zu bewerkstelligen
Danke Humml:)

gpswanderer
20.01.2008, 08:30
Hallo,
Z.B. "Beim Klicken"

Private Sub TextFeld_Click()
Dim i As Integer
i = 1
If i = i Then
MsgBox "klar i ist ja immer eins"
End If
End Sub

Humml
20.01.2008, 08:56
Ok ich glaub ich muss nochmals erläutern was ich möchte da hast mich falsch fernstanden.
Der Code steht ja nicht in visual Basic sondern im Textfeld und der soll ausgeführt werden
Also in VB müsste dann stehen

Private Sub TextFeld_Click()
Code fon me.TextFeld.text ausführn
End Sub
Danke humml:)

Arne Dieckmann
20.01.2008, 09:01
<span style="font-family:Courier New;color:#000080;">Application.Run</span> kann leider nur bestehende Prozeduren ausführen, mehrere Textzeilen werden dadurch nicht interpretiert. Also tippe ich auf eher: Nein, das geht so nicht.

Wenn du also
Dim i As Integer
i = 1
If i = i Then
MsgBox "klar i ist ja immer eins"
End If
in eine Prozedur verlagerst, und deren Name im Textfeld stehen würde, dann so:
Application.Run Me!meinTextfeld

Toast78
20.01.2008, 09:57
@Arne: Mal ganz vorsichtig angefragt: Würde denn die Eval-Funktion funktionieren?

Josef P.
20.01.2008, 10:01
auch wenn ich nicht Arne bin ;) : nein, denn eval kann keinen VBA-Code wie aus #1 interpretieren.

Toast78
20.01.2008, 10:04
Dankööö! :D

Frank200
20.01.2008, 10:31
Hallo,
vielleicht geht es Eval() im begrenzten Umfang doch ? Klar, Eval arbeitet nur einzeilig - genauso wie das Direktfenster. Doch auch dort kann man Schleifen ausführen, wenn man die Zeilensprünge durch Doppelpunkte ":" ersetzt und so alles in eine Zeile quetscht. Kommt natürlich auf die Menge des Codes an und was eigentlich gemacht werden soll.

Josef P.
20.01.2008, 11:34
@Fank: Kannst du ein Beispiel zeigen, das bei deinem Test funktionierte?

lalo
20.01.2008, 12:02
Hallo, ich denke das ist mit dem MS Script Control zu lösen.

1. Falls nicht vorhanden Scriptcontrol bei MS downloaden und installieren (Achtung die deutsche Hilfedatei wird nicht in Windows/System32 installiert sondern in das Programmverzeichnis)

2. Referenz / Verweis auf auf Microsoft "Script Control 1.0 setzen"

3. Scriptcontrol in die Form einfügen, zur Laufzeit ist es unsichtbar.

Hier ein Beispielcode:
Private Sub cmdOK_Click()
ScrCntl.Language = "VBScript"
ScrCntl.AddCode txtEingabe
ScrCntl.Reset
End Sub
In das feld txtEingabe habe ich folgendes eingegeben:
dim i
For I = 1 to 5
msgbox "Hugo " & i
next

beim Klicken auf cmdOK kommt 5 mal die MsgBox.
Gruß Bernd

Arne Dieckmann
20.01.2008, 12:24
@Bernd: Gute Idee! Hier klappt's auch, allerdings hat das Scriptcontrol Schierigkeiten mit <span style="font-family:Courier New;color:#000080;">Dim i as Integer</span> aus dem 1. Beitrag. Wenn man den Typen (also " as Integer") weglässt, geht's.

Frank200
20.01.2008, 13:43
@Josef
Das Beispiel ist natürlich sehr simpel. Aber es zeigt, was ich meine.
Im Direktfenster:
For i=1 to 10: debug.print "i=" & i: next i

lalo
20.01.2008, 15:53
Hallo,
zu meinem Vorschlag mit dem MS Script Control zu arbeiten:
Es ist dort VBScript - Code zu verwenden. Dort kennt man nur Dim ohne as String/Integer usw. also nur Dim Variablenname
Gruß Bernd

Humml
20.01.2008, 21:40
Hallo zunächst einmal für die Antworten.

Ich glaub das ist genau das richtige dass MS Script Control
Leider kann ich es noch nicht testen.
Denn wenn ich einen verweis darauf setzen möchte bekomm ich immer eine Fehlermeldung. Liegt glaube ich daran das ich Vista und Access 2007 verwende
Danke an alle Humml:)