Die Community zu .NET und Classic VB.
Menü

FAQ 0037: Wie kann ich eine Variable von einer Form an eine andere übergeben?

 von 

Frage 

Wie kann ich eine Variable von einer Form an eine andere übergeben?

Die unsaubere Variante  

Die Variable, die in mehreren Forms benutzt werden soll, wird in einer Form als Public deklariert.
Nachteil ist, daß die Form geladen wird (sofern sie noch nicht geladen ist), sobald man auf die Variable zugreift.

'   Form1:
'   Benötigte Steuerelemente:
'   -   1 CommandButton:    Command1

Option Explicit

'   Variable, die öffentlich sein soll
Public MeinString As String

Private Sub Command1_Click()
    '   Zweite Form aufrufen
    Form2.Show vbModal
End Sub

Private Sub Form_Load()
    '   Inhalt festlegen
    MeinString = "Form mit öffentlicher Variable"
End Sub
'   Form2:
'   Benötigte Steuerelemente:
'   -   1 CommandButton:    Command1
'   -   1 Textbox      :    Text1

Option Explicit

Private Sub Command1_Click()
    '   Form schließen
    Unload Me
End Sub

Private Sub Form_Load()
    '   Textbox mit Inhalt füllen
    Me.Text1.Text = Form1.MeinString
End Sub

Listing 1: Variable übergeben I

Die saubere Variante  

Deutlich besser ist es, wenn die Variable, welche in mehreren Forms benutzt werden soll, in einem Modul als Public deklariert wird.

'   Modul1

Option Explicit

'   Variable, die öffentlich sein soll
Public MeinString As String
'   Form1:
'   Benötigte Steuerelemente:
'   -   1 CommandButton:    Command1

Option Explicit

Private Sub Command1_Click()
    '   Zweite Form aufrufen
    Form2.Show vbModal
End Sub

Private Sub Form_Load()
    '   Inhalt festlegen
    Module1.MeinString = "Modul mit öffentlicher Variable"
End Sub
'   Form2:
'   Benötigte Steuerelemente:
'   -   1 CommandButton:    Command1
'   -   1 Textbox      :    Text1

Option Explicit

Private Sub Command1_Click()
    '   Form schließen
    Unload Me
End Sub

Private Sub Form_Load()
    '   Textbox mit Inhalt füllen
    Me.Text1.Text = Module1.MeinString
End Sub

Listing 2: Variable übergeben II

Die objektorientierte Variante  

Das Ganze geht natürlich auch objektorientiert (Code von pks optimiert).

'   Form1:
'   Benötigte Controls:
'   -   1 CommandButton (Command1)

Option Explicit

Private Sub Command1_Click()
    Dim Frm As Form
    Dim s As String
   
    Set Frm = New Form2
    Frm.MeinName = "Peter"
    Load Frm
    Frm.Show vbModal
    Set Frm = Nothing
End Sub
'   Form2:
'   Benötigte Controls:
'   -   1 Textbox (Text1)

Option Explicit

Private strMeinName As String

Public Property Get MeinName() As String
    MeinName = strMeinName
End Property

Public Property Let MeinName(ByVal strNewName As String)
    strMeinName = strNewName
End Property

Private Sub Form_Load()
    Me.Text1.Text = MeinName
End Sub

Listing 3: Variable übergeben III

Ihre Meinung  

Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.