Forum: PC-Programmierung Rückgabe der vom Benutzer in ein Dialogfeld eingegebenen Werte an das VBA-Makro


von Guido C. (guidoanalog)


Lesenswert?

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

von tomal (Gast)


Lesenswert?

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"

von Guido C. (guidoanalog)


Lesenswert?

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

von tomal (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.