Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
Dim newtarget As Integer
Dim x As Integer
newtarget = target.Row
showtar
End Sub
Sub showtar()
Dim newtarget As Integer
MsgBox (newtarget)
End Sub
Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
''Dim newtarget As Integer''weglassen
Dim x As Integer
newtarget = target.Row
showtar
End Sub
Sub showtar()
''Dim newtarget As Integer ''weglassen
MsgBox (newtarget)
End Sub
Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
Dim x As Integer
newtarget = target.Row
If target.Row > 16 And target.Row < 382 Then
If target.Column > 1 And target.Column < 17 Then
Info.Show
Else
x = MsgBox("Dieses Feld ist gesperrt!", vbOKOnly)
End If
Else
x = MsgBox("Dieses Feld ist gesperrt!", vbOKOnly)
End If
Range("A1").Select
End Sub
Sub UserForm_Initialize()
Me.TextBoxDate.Value = Worksheets("2006").Cells(newtarget, 1).Value
End Sub
Um eine Variable an ein UserForm in Excel VBA zu übergeben, folge diesen Schritten:
Deklaration der Variable: Erstelle die Variable im richtigen Modul. Wenn du eine Public-Variable nutzen möchtest, deklariere sie in einem Standardmodul, nicht im Tabellenmodul.
Public newtarget As Integer
Ereignis eines Steuerelements verwenden: Nutze ein Ereignis, um die Variable zu setzen, z.B. bei einem Doppelklick auf eine Zelle.
Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
newtarget = target.Row
If target.Row > 16 And target.Row < 382 Then
UserForm1.Show
Else
MsgBox "Dieses Feld ist gesperrt!"
End If
End Sub
Werte im UserForm setzen: Im UserForm kannst du die Variable wie folgt verwenden:
Private Sub UserForm_Initialize()
Me.TextBox1.Value = Worksheets("Sheet1").Cells(newtarget, 1).Value
End Sub
Variable bleibt leer: Stelle sicher, dass die Variable newtarget im richtigen Modul deklariert ist. Wenn sie im Tabellenmodul deklariert ist, wird sie möglicherweise nicht korrekt übergeben.
Editor nicht geschlossen: Manchmal kann der VBA-Editor offene Fenster blockieren. Schließe den Editor, um sicherzustellen, dass der Code korrekt ausgeführt wird.
Falls du eine komplexere Vorgehensweise wünschst, kannst du auch Klassen verwenden, um Variablen zu übergeben. Hier ist ein einfaches Beispiel:
Klasse definieren: Erstelle ein Klassenmodul mit einer Property für die Variable.
' Modul: clsArray
Option Explicit
Private vntVariable As Variant
Public Property Get prpArray() As Variant
prpArray = vntVariable
End Property
Public Property Let prpArray(ByVal vntValue As Variant)
vntVariable = vntValue
End Property
Verwendung im Standardmodul:
Dim objClass As clsArray
Public Sub prcTest()
Set objClass = New clsArray
objClass.prpArray = Array(1, 2, 3)
UserForm1.Show
End Sub
Hier ist ein Beispiel, wie du die MsgBox zur Ausgabe einer Variable verwenden kannst:
Sub UserForm_Activate()
MsgBox "Die Zeile ist: " & newtarget
End Sub
In diesem Beispiel wird beim Öffnen des UserForms eine MsgBox angezeigt, die den Wert der newtarget-Variable ausgibt.
Verwende Me für die aktuelle Instanz: Bei der Verwendung von Me in einem UserForm kannst du auf die Steuerelemente des Forms zugreifen, ohne den Namen des Forms explizit anzugeben.
Variable in einer Tag-Eigenschaft speichern: Du kannst Daten auch in der Tag-Eigenschaft eines Steuerelements speichern, um sie später abzurufen.
1. Wie kann ich eine Array an ein UserForm übergeben?
Du kannst ein Array ähnlich wie eine einzelne Variable übergeben, indem du ein Public-Array im Standardmodul deklarierst und es im UserForm verwendest.
2. Was ist der Unterschied zwischen Public und Private Variablen?
Public Variablen sind in allen Modulen sichtbar, während Private Variablen nur im Modul, in dem sie deklariert wurden, sichtbar sind.