Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variable an UserForm übergeben

Variable an UserForm übergeben
16.01.2006 17:18:55
tlentz
wie kann ich einen array an ein userform übergeben?

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable an UserForm übergeben
16.01.2006 17:22:25
Rudi
Anrede,
Frage?
Gruß
AW: Variable an UserForm übergeben
16.01.2006 17:28:26
tlentz
Na um die form zu wahren werde ich mir das fürs nächste mal wieder merken.
sincerly,
thomas
AW: Variable an UserForm übergeben
16.01.2006 17:41:12
Dieter
Hi,
deklarier das Array in einem Standardmodul als Public.
mfg Dieter
Anzeige
AW: Variable an UserForm übergeben
17.01.2006 13:26:37
tlentz
Hi nochmal,
das mit den Public variablen habe ich probiert allerdings geht es nicht.
hier mal ein einfaches beispiel:
---------------------------
Option Explicit
public newtarget As Integer
---------------------------

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

---------------------------
Anzeige
AW: Variable an UserForm übergeben
17.01.2006 14:53:04
Dieter
---------------------------
Option Explicit
public newtarget As Integer
---------------------------

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

mfg Dieter
Anzeige
AW: Variable an UserForm übergeben
17.01.2006 16:25:31
tlentz
Hallo nochmal,
du hattest recht, so funktioniert dieses beispiel jetzt. Allerdings habe ich immer noch das gleiche Problem, dass die variable im Code des Formulars wieder leer ist.
Ist public nicht auf das ganze dokument bezogen?
gruß
AW: Variable an UserForm übergeben
17.01.2006 16:29:24
Dieter
Hi,
schließ beim Testen des Codes den Editor.
mfg Dieter
Anzeige
AW: Variable an UserForm übergeben
17.01.2006 16:41:26
tlentz
Hi,
leider war auch das ohne erfolgserlebnis. Ich mach da doch bestimmt irgendeine kleinigkeit falsch. Hier nochmal der Code: ($newtarget is leider im Formular weiterhin leer)
'Code - Sheet:
-----------------------------------
Option Explicit
Public newtarget As Integer
-----------------------------------

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

------------------------------
Code-Form:
------------------------------

Sub UserForm_Initialize()
Me.TextBoxDate.Value = Worksheets("2006").Cells(newtarget, 1).Value
End Sub

------------------------------
Anzeige
AW: Variable an UserForm übergeben
17.01.2006 16:54:39
Nepumuk
Hi,
versuch es mal so:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Row > 16 And Target.Row < 382 And Target.Column > 1 _
        And Target.Column < 17 Then
        With UserForm1
            .Tag = Cells(Target.Row, 1).Text
            .Show
        End With
    Else
        MsgBox "Dieses Feld ist gesperrt!"
    End If
    Range("A1").Select
End Sub

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub UserForm_Activate()
    TextBox1.Value = Me.Tag
End Sub

Gruß
Nepumuk

Anzeige
AW: Variable an UserForm übergeben
17.01.2006 17:04:59
tlentz
Hi,
super dieser weg funktioniert. Diese funktion muss ich mir merken.
vielen dank und gruß
thomas
AW: Variable an UserForm übergeben
17.01.2006 17:08:53
Dieter
Hi,
Public-Variable müssen in ein Standardmodul, nicht ins Tabellenmodul.
mfg Dieter
AW: Variable an UserForm übergeben
16.01.2006 18:16:02
Nepumuk
Hi,
wenn du es gerne ein bisschen komplizierter hast :-), kannst du das auch über eine Klasse lösen:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private objClass As clsArray

Public Sub prcTest()
    Dim intArray(1 To 10) As Integer
    intArray(1) = 666
    Set objClass = New clsArray
    objClass.prpArray = intArray
    UserForm1.Show
    Set objClass = Nothing
End Sub

Public Function fncClass() As Object
    Set fncClass = objClass
End Function

' **********************************************************************
' Modul: clsArray Typ: Klassenmodul
' **********************************************************************

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

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub CommandButton1_Click()
    Dim objArray As Object
    Dim vntArray As Variant
    Set objArray = fncClass
    vntArray = objArray.prpArray
    MsgBox vntArray(1)
End Sub

Gruß
Nepumuk

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Variable an UserForm übergeben


Schritt-für-Schritt-Anleitung

Um eine Variable an ein UserForm in Excel VBA zu übergeben, folge diesen Schritten:

  1. 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
  2. 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
  3. 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

Häufige Fehler und Lösungen

  • 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.


Alternative Methoden

Falls du eine komplexere Vorgehensweise wünschst, kannst du auch Klassen verwenden, um Variablen zu übergeben. Hier ist ein einfaches Beispiel:

  1. 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
  2. Verwendung im Standardmodul:

    Dim objClass As clsArray
    
    Public Sub prcTest()
       Set objClass = New clsArray
       objClass.prpArray = Array(1, 2, 3)
       UserForm1.Show
    End Sub

Praktische Beispiele

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.


Tipps für Profis

  • 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.


FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige