Frage von AquaMedium, 126

Wie kann ich Variablen übergeben (Excel, VisualBasic)?

Hallo zusammen,

ich habe eine UserForm in der folgendes steht:

    ...
    Spalte = 3
    Zeile = 6
    
    Unload UserForm1
    
    If OptionButton2 = True Then
        UserForm2.Show
    End If
...

In der zweiten UserForm steht dann:

Sub CommandButton1_Click()

If OptionButton1 = True Then
    Spalte = 6
ElseIf OptionButton2 = True Then
    Spalte = 9
ElseIf OptionButton3 = True Then
    Spalte = 12
ElseIf OptionButton4 = True Then
    Spalte = 15
End If

Unload UserForm2

End Sub

Leider funktioniert es nicht und "Spalte" bleibt immer 6.. Kann mir jemand weiterhelfen und sagen wie ich es hin bekomme, dass Spalte geändert wird?

Antwort
von eddi0102, 68
    Unload UserForm1 
If OptionButton2 = True Then 
UserForm2.Show 
End If

Wenn dieser Code in der UserForm1 steht, dann heißt dies, dass als erstes die UserForm1 entladen wird. Damit kann aber der nachfolgende Code nicht ausgeführt werden. Setz mal Unload UserForm1 an das Programmende.

Expertenantwort
von Iamiam, Community-Experte für Excel, 74

Hab mich jetzt nicht weiter reinvertieft, aber Variable übergibt man innerhalb einer Aufrufeserie so:  Deklariere eine Variable als Public. Das macht man ganz oben, neben Option explicit danach einen Doppelpunkt, Leerzeichen  und Public Variablenname, ggf mehrere wie bei Dim

Kommentar von maximilianus7 ,

option explicit:
ist nicht nötig

(aber sinnvoll - erzeugt aber zunächst fehler bei undeklarierten variablen)

Kommentar von AquaMedium ,

So?

Option Explicit: Public Spalte
Public Sub CommandButton1_Click()
Dim Tag As Byte
Dim Monat As Byte
Dim Jahr As Integer
rDim Titel As String
Dim Betrag As Single
Dim Spalte As Byte
Dim Zeile As Byte
If Not OptionButton1 = True And Not OptionButton2 = True Then    MsgB.....
Kommentar von Iamiam ,

im Prinzip ja, aber bereits Public Spalte as Byte

und dann nicht nochmal in Dim Spalte, ist ja schon angemeldet.

 Und wie gesagt: nur innerhalb eines Makros, das andere aufruft,  danach wird die auch wieder gelöscht!

Expertenantwort
von Ninombre, Community-Experte für Excel, 72

Wenn ich es richtig verstehe, hast Du nur den Klick auf OptionButton1 abgefragt. Also sind die anderen Button nicht relevant, die können den Code gar nicht aufrufen. Du musst das also für alle Button hinterlegen (Spalte dann als globale Variable) oder eine andere Art des Ereignisses triggern.

Antwort
von AquaMedium, 67

Ah, Excel, Visual Basic✌🏻️

Antwort
von perhp, 64

Es wäre auch interessant zu wissen, in welcher Sprache? JavaScript...? Mit diesem Code kann man nicht wirklich was anfangen...


Kommentar von Iamiam ,

Excel verwendet VBA (steht ja sogar in der Frage!), "man" kann damit schon was anfangen!

Keine passende Antwort gefunden?

Fragen Sie die Community