Hallo, ich bin gerade dabei ein VBA-Makro, dass ich für Solidworks (http://www.solidworks.de/) geschrieben habe, ordentlich zu strukturieren. Hierbei bin ich auf das folgende Problem gestoßen. Ich rufe während der Makroausführung ein Dialogfenster auf. Meine Frage an Euch: Wie bekomme ich die vom Benutzer gemachten Eingaben nach Beendigung des Dialogs zurückgegeben? Geht dies in VBA nur über globale Variablen? Mit freundlichen Grüßen Guido
Ich hab kein Solidworks hier aber ich denke, dass ein VBA-Dialogfenster unabhängig von der jeweiligen Applikation ist.
1 | Sub eingabe() |
2 | Dim rueckgabe As String |
3 | |
4 | rueckgabe = InputBox("Eingabeaufforderung", "Fenstertitel") |
5 | End Sub |
enthält den eingegebenen Wert in der Variable "rueckgabe"
Hallo, tomal schrieb: > Ich hab kein Solidworks hier aber ich denke, dass ein VBA-Dialogfenster > unabhängig von der jeweiligen Applikation ist. stimmt, das gleiche Problem hätte ich wohl auch in Word, Excel, etc. Ich habe nicht nur einen, sondern mehrere Rückgabewerte. Aus diesem Grund habe ich ein Dialogfenster erstellt. Allem Anschein nach gibt es nur die Möglichkeit die Variablen als "public" zu deklarieren, ihnen gegebenenfalls einen Vorgabewerte mitzugeben und den Dialog aufzurufen. Innerhalb des Dialogs kann ich dann auf die Werte zugreifen und sie so zurückgeben.
1 | Option Explicit |
2 | |
3 | Public RotationAngle As Double 'Angle for rotation in degrees (°) |
4 | Public XOffset, YOffset As Double 'x-Offset/y-Offset in mm |
5 | |
6 | RotationAngle = 0 'Angle for rotation in degrees (°) |
7 | XOffset = 0 'x-Offset in mm |
8 | YOffset = 0 'y-Offset in mm |
9 | |
10 | MyForm.Show |
Dies funktioniert so weit auch. Allerdings hat das Ganze den "Touch" von globalen Variablen. Brrrr.... da schüttelt es mich. Mit freundlichen Grüßen Guido
Ich hab ein Form "UserForm1" mit einem Textfeld "TextBox1" angelegt. Damit funktioniert sowohl die Initialisierung als auch das Speichern aktueller Werte in beliebige Variablen wenn man das entsprechende Ereignis der Form ausnützt. Als Beispiel das einfache Beenden der Form über "X". Kann aber auch direkt bei Änderungen oder mit einem OK-Button erfolgen. Modul code
1 | 'set initial value |
2 | Sub test() |
3 | |
4 | UserForm1.Controls("TextBox1").Value = "abcd" |
5 | UserForm1.Show |
6 | |
7 | End Sub |
8 | |
9 | 'called by userform_terminate event |
10 | Sub uf_term() |
11 | |
12 | Dim tb1 As String |
13 | tb1 = UserForm1.Controls("TextBox1").Value |
14 | |
15 | End Sub |
Form code
1 | Private Sub UserForm_Terminate() |
2 | uf_term |
3 | End Sub |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.