Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Werte und Objekte von einem Userform zurückbekommen
zurück: Werte und Objekte an ein Userform übergeben weiter: Sub oder Function, das ist hier die Frage Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Nepumuk
VB / VBA Programmierer


Verfasst am:
08. Nov 2008, 22:12
Rufname: Max
Wohnort: Dusseldoof


Werte und Objekte von einem Userform zurückbekommen - Werte und Objekte von einem Userform zurückbekommen

Nach oben
       Version: Office 2k (2000)

Hallo,

jetzt machen wir das ganze anders herum. Wir holen Werte oder Objekt von einem Userform zurück.

Für einfache Variablen nutzen wir wieder die Tag – Eigenschaft. Dazu ist es notwendig das Userform nicht zu entladen, sondern erst über die Hide – Methode zu verlassen um es dann, nach dem wir die Tag – Eigenschaft gelesen haben, endgültig zu entladen. Beispiel:

In einem Standardmodul:

Code:
Option Explicit

Public Sub Beispiel1()
    Dim strReturn As String
    With UserForm1
        .Tag = "12345"
        .Show
        strReturn = .Tag
    End With
    Unload UserForm1
    MsgBox strReturn
End Sub

Im Klassenmodul des Userforms:

Code:
Option Explicit

Private Sub CommandButton1_Click()
    Me.Hide
End Sub

Private Sub UserForm_Activate()
    Dim strReturn As String
    strReturn = Me.Tag
    strReturn = CStr(CDbl(strReturn) * 2)
    Me.Tag = strReturn
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Cancel = 1
        Me.Hide
    End If
End Sub


Über das QueryClose – Ereignis müssen wir das schließen des Userforms über das Schließenkreuz abfangen, da wir sonst beim Zugriff auf die Tag – Eigenschaft des entladenen Userforms einen Automatisierungsfehler auslösen.



Für komplexere Variablen und Objekte benutzen wir wieder die Möglichkeit über Eigenschaftsprozeduren (Property = Eigenschaft) auf diese zuzugreifen. Beispiel:

In einem Standardmodul:

Code:
Option Explicit

Public Sub Beispiel2()
    Dim objCollection As Collection
    Dim intIndex As Integer
    Set objCollection = New Collection
    With UserForm2
        Set .prpCollection = objCollection
        .Show
        Set objCollection = .prpCollection
    End With
    Unload UserForm2
    For intIndex = 1 To objCollection.Count
        MsgBox objCollection.Item(intIndex)
    Next
End Sub

Im Klassenmodul des Userforms:

Code:
Option Explicit

Private mobjCollection As Collection

Private Sub CommandButton1_Click()
    Me.Hide
End Sub

Private Sub UserForm_Activate()
    Call Fill_Collection
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Cancel = 1
        Me.Hide
    End If
End Sub

Friend Property Set prpCollection(objCollection As Collection)
    Set mobjCollection = objCollection
End Property

Friend Property Get prpCollection() As Collection
    Set prpCollection = mobjCollection
End Property

Private Sub Fill_Collection()
    mobjCollection.Add "Hallo"
    mobjCollection.Add "Office-Lösung"
    mobjCollection.Add "Forum"
End Sub


Ein Array würden wir über eine Property Let – Prozedur an das Userform übergeben und über eine Property Get – Prozedur wieder abholen. Eigentlich ganz einfach, oder?


Natürlich kannst du jetzt einwenden, mit einer öffentlich Variablen kannst du dir ein paar Zeilen Code sparen und das funktioniert trotzdem. Ja, da hast du schon Recht, aber es geht auch um saubere Programmierung und bei großen Projekten mit mehreren tausend Programmzeilen kommt es nicht auf eine Zeile mehr oder weniger an, sondern vor allen Dingen die Übersicht nicht zu verlieren. Und eine Hundertschaft öffentlicher Variablen dienen dem sicher nicht.

_________________
De fontibus non est disputandum

Gruß
Nepumuk Cool
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Werte aus Liste raussuchen 8 KARL 1217 30. Apr 2014, 18:10
Holger1968 Werte aus Liste raussuchen
Keine neuen Beiträge Excel Formeln: Werte auslesen und getrennt darstellen (oder so) ?? 9 Gast 898 19. Aug 2005, 18:00
rainberg Werte auslesen und getrennt darstellen (oder so) ??
Keine neuen Beiträge Excel Formeln: Automatisch immer die Werte aus letzter Spalte übernehmen??? 31 Provaeth 4031 19. Jul 2005, 13:29
ae Automatisch immer die Werte aus letzter Spalte übernehmen???
Keine neuen Beiträge Excel Formeln: werte aus verschiedenen tabellen addieren 3 Actiongreg 2518 06. Jul 2005, 17:23
actiongreg werte aus verschiedenen tabellen addieren
Keine neuen Beiträge Excel Formeln: Werte einer Tabelle auslesen 4 bobi 1930 29. Jun 2005, 13:36
bobi Werte einer Tabelle auslesen
Keine neuen Beiträge Excel Formeln: Mehrere Werte aus einer Zelle einzeln darstellen 2 Gast 1113 24. Mai 2005, 11:25
Gast Mehrere Werte aus einer Zelle einzeln darstellen
Keine neuen Beiträge Excel Formeln: Werte von einer Tabelle in eine andere Übernehmen 11 Blue_Whirlwind 2311 22. Mai 2005, 17:18
Blue_Whirlwind Werte von einer Tabelle in eine andere Übernehmen
Keine neuen Beiträge Excel Formeln: Alle Werte einer Spalte zusammenzählen 4 Gaaast 1109 13. Apr 2005, 22:14
Scelina Alle Werte einer Spalte zusammenzählen
Keine neuen Beiträge Excel Formeln: werte aus trendlinie übernehmen 3 Gast 7577 06. Apr 2005, 18:19
fl618 werte aus trendlinie übernehmen
Keine neuen Beiträge Excel Formeln: Werte aus 2. Datei/Tabellenblatt übertragen //Zusatzfrage 6 original-m 1708 25. Feb 2005, 11:25
Sigrid Werte aus 2. Datei/Tabellenblatt übertragen //Zusatzfrage
Keine neuen Beiträge Excel Formeln: mehrere Werte einzelner zellen einer zelle zu weisen 1 cygnus0815 1326 24. Feb 2005, 14:09
Gästchen mehrere Werte einzelner zellen einer zelle zu weisen
Keine neuen Beiträge Excel Formeln: Vergleichen 2 Tabellen mit ausgabe der fehlenden werte 1 Julie 2923 25. Jan 2005, 16:53
fridgenep Vergleichen 2 Tabellen mit ausgabe der fehlenden werte
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps