Zum vorherigen AbschnittZum nächsten Abschnitt Code in Strings ausführen
Jeder VB-Programmierer wird sich schon einmal gefragt haben, wie man eigentlich Anweisungen in einer Zeichenkette ausführen kann, um z.B. eine Art Makrosprache in das Programm einzubauen oder mathematische Ausdrücke ohne großen Aufwand berechnen zu lassen. Da VB im Unterschied zu manch anderen Programmiersprachen stark zwischen Strings und dem tatsächlichen Code unterscheidet, muss man sich wie so oft einer API-Funktion bedienen.
Achtung: Leider funktioniert diese API-Funktion derzeit nur in der Entwicklungsumgebung, nicht in kompilierter Form. Falls Sie eine Idee haben, wie dieses Problem zu lösen ist, mailen Sie mir bitte.
Ihre Bewertung:
 12345
    

Bewertung dieses Tipps:  (bewertet von insgesamt 24 Besuchern)

 Zum vorherigen AbschnittZum nächsten Abschnitt Deklarationen/Funktion
Um die folgende API-Funktion in eigenen Projekten nutzen zu können, muss sie zuerst im Kopf der Datei deklariert werden. Ich empfehle Ihnen, diese Deklaration in einem Modul vorzunehmen, da die Funktion dann später im gesamten Projekt zur Verfügung steht.
Achtung: Bitte deklarieren Sie nur die API-Funktion, die Ihrer VB-Version entspricht!

'VBA (Access, Word, Excel,...)
Private Declare Function EbExecuteLine Lib "vba332.dll" _
(ByVal StringToExec As Long, ByVal Any1 As Long, _
ByVal Any2 As Long, ByVal CheckOnly As Long) As Long

'Vb5
Private Declare Function EbExecuteLine Lib "vba5.dll" _
(ByVal StringToExec As Long, ByVal Any1 As Long, _
ByVal Any2 As Long, ByVal CheckOnly As Long) As Long

'Vb6
Private Declare Function EbExecuteLine Lib "vba6.dll" _
(ByVal StringToExec As Long, ByVal Any1 As Long, _
ByVal Any2 As Long, ByVal CheckOnly As Long) As Long

Function ExecuteCode(Code As String, Optional CheckOnly As Boolean) As Boolean
   ExecuteCode = EbExecuteLine(StrPtr(Code), 0&, 0&, CheckOnly) = 0
End Function

 Zum vorherigen AbschnittZum nächsten Abschnitt Aufruf
Der Aufruf selbst ist nicht sehr kompliziert, jedoch sind einige Dinge zu beachten:

1. Wenn man in VB innerhalb einer Zeichenkette Anführungszeichen verwenden möchte, muss man diese im String doppelt notieren. In den folgenden Beispielen werden solche Anführungszeichen in orange eingefärbt. Beispiel:
Variable = "Das folgende Wort steht in Anführungszeichen: ""Beispiel""."

2. Nur globalen Variablen (Public) können Werte zugeweisen werden. Bei folgendem Beispiel wurde Variable vorher in einem Modul als global deklariert:
Call ExecuteCode("Variable = ""Test""")

3. Genauso verhält es sich mit Steuerelementen. Es muss immer die Form noch mit angegeben werden. Beispiel:
Call ExecuteCode("Form1.Label1.Caption = ""Test""")

Die Funktion ExecuteCode gibt True zurück, wenn alles korrekt ausgeführt wurde, ansonsten False.
Wenn Sie den Code bloß auf richtige Syntax überprüfen wollen, übergeben Sie zusätzlich noch True als zweites Argument. Auch hier gilt: Ist die Syntax korrekt, gibt die Funktion True zurück, ansonsten False. Beispiel:

Dim Variable As Boolean
Variable = ExecuteCode("Variable = ""Hier fehlt ein Anführungszeichen am Schluss", True)

Bei diesem Beispiel wird natürlich False zurückgegeben, da am Ende des Strings ein (bzw. zwei) Anführungszeichen fehlen.

 Zum vorherigen AbschnittZum nächsten Abschnitt Beispielprojekt
Hier können Sie sich ein Beispielprojekt für Vb5 und Vb6 herunterladen, das vielleicht alles noch einmal etwas anschaulicher erklärt.
 Visual Basic 6.0  Visual Basic 5.0 und älter



Quellen: SHADOWare.de
Letzte Änderung: 07.08.2000
©2000 by SHADOWare, Thomas Bachem