Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Friedrichroda /
Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.

VBA Globale Variable in Userform füllen und später auslesen
#1
Hallo

Ich habe wiedermal ein Problem. Nachdem ich mir diverse Forenbeiträge angesehen habe, bin ich zwar ein Stück schlauer, aber es reicht nicht.

Dummerweise habe ich mir vorgenommen ein Userform zu nutzen um 3 Button mit eigener Beschriftung zu bekommen. Nun brauche ich aber das Ergebnis der Auswahl nicht im Userform-Code sondern zentral bei "DieseArbeitsmappe".

Dort habe ich nun schon eine Variable definiert, die ich in Userform füllen will. Dort behält sie auch den Wert, aber zurück im Code nach dem Aufruf kommt 0 oder gar nichts raus.

Code:
Option Explicit
Public Auswahl As Byte
Private Sub Workbook_BeforePrint(Cancel As Boolean)
...
   Else: UserForm1.Show
       MsgBox Auswahl
       Unload UserForm1

Userform:
Code:
Private Sub CommandButton1_Click()
Auswahl = 1
UserForm1.Hide
MsgBox Auswahl
End Sub

Was muss ich anders definieren oder machen, damit ich "Auswahl" oben richtig übergeben bekomme?

Danke
Grüße,

Hardilein
mit Excel 2003
to top
#2
Hallo,

nimm einfach die Tag-Eigenschaft der Userform.

UserForm1:
Code:
Private Sub CommandButton1_Click()
 Me.Tag = "Hallo"
 Me.Hide
End Sub

DieseArbeitsmappe:
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
...
 Else
   UserForm1.Show
   MsgBox UserForm1.Tag
   Unload UserForm1
 End If

Gruß Uwe
to top
#3
Hallo

Danke, klappt.

Das ist genau das, was ich anderswo nicht verstanden habe, wo es aber auch umfangreicher war. "Tag" ist eine festgelegte "Variable" für solchen Fall? "Me" bezieht sich einfach auf die Userform? Falls mehrere parallel aufgehen, ist jede in diesem Moment selber angesprochen?
Grüße,

Hardilein
mit Excel 2003
to top
#4
Hallo,

das steht in der VBA-Hilfe:
Zitat:Tag-Eigenschaft

Speichert zusätzliche Informationen über ein Objekt.

Zitat:Me

Das Schlüsselwort Me verhält sich wie eine implizit deklarierte Variable. Es steht allen Prozeduren in einem Klassenmodul automatisch zur Verfügung. Wenn eine Klasse mehrere Instanzen haben kann, stellt Me eine Möglichkeit dar, um sich auf diejenige Instanz der Klasse zu beziehen, in der Code ausgeführt wird.

Es würde auch Deine Variante mit der globalen Variable funktionieren. Allerdings müsste diese in einem allgemeinen VBA-Modul deklariert werden und nicht in einem Klassenmodul wie "DieseArbeitsmappe", wie Du es probierst.

Gruß Uwe
to top
#5
Hallo

Aha, vielen Dank.
Grüße,

Hardilein
mit Excel 2003
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  abhängige Dropdowns begrenzt füllen, 1. anzeigen Rabe 8 93 23.03.2017, 14:17
Letzter Beitrag: snb
  VBA - Textfeld in Abhängigkeit von mehreren Optionsfeldern und ComboBoxen füllen ECWetzi 14 319 22.03.2017, 21:29
Letzter Beitrag: schauan
  Variable Spaltenanpassung biglie93 2 48 22.03.2017, 18:20
Letzter Beitrag: biglie93
  "variable" Zellbezüge in Formeln Marximus 4 45 22.03.2017, 17:07
Letzter Beitrag: Marximus
  Comboboxen untereinander füllen soldblub 6 96 15.03.2017, 15:02
Letzter Beitrag: DbSam
  VBA: SQL-Statement in Textdatei als Variable definieren T081A5 5 141 15.03.2017, 03:59
Letzter Beitrag: DbSam
  variable Zellenabfrage | Wert: Ja oder Nein? bausemaus 6 126 14.03.2017, 21:52
Letzter Beitrag: schauan
  Formular füllen und 2fach speichern Tuempeltaucher 2 89 27.02.2017, 13:58
Letzter Beitrag: Tuempeltaucher
  Drop Down Feld mittels gefilterter Liste füllen sunny01 8 208 26.02.2017, 20:35
Letzter Beitrag: sunny01
  Variable Ziffernfolge aus Text ermitteln user2212 7 115 21.02.2017, 15:38
Letzter Beitrag: snb

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste