| |
| 3D-Druck: 7 Gründe für den Einsatz in der Medizin, ein Fachartikel
|
Autor
|
Thema: Objekt von Sub an Form übergeben (1856 mal gelesen)
|
skyzem Mitglied
Beiträge: 400 Registriert: 30.08.2006 Win 7 Enterprise x64 Cornerstone 5.3.0.5 Minitab 16.2.1.0 Excel 2010 Notepad++ 6.3.1 Putty 0.63 Calc.exe
|
erstellt am: 05. Dez. 2013 14:44 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Ich hab mal wieder eine VBA-Frage. Gegeben ist folgender Code:
Code: Sub test() Dim myLot As Lot Set myLot = New Lot myLot.ID = Selection.Value If Not myLot.Valid Then End myLot.HoldClaimIST = Replace(ClipToString, Chr(13) + Chr(10), Chr(10)) ClaimMemo.Show '<-- hier soll das Objekt Lot an das Formular übergeben werden. 'hier kommt weiterer code in welcher das Objekt Lot wieder gebraucht wird. End Sub
Das Objekt Lot sieht wie folgt aus: Code: Public ID As String Public HoldClaimIST As String Public HoldClaimSOLL As StringPublic Function Valid() If ID = "" Then Valid = False Else Valid = True End If End Function
Also ziemlich banal. Nun das Formular: Code: Private Sub Cancel_Click() Me.Hide End End SubPrivate Sub OK_Click() myLot.HoldClaimSOLL = Replace(ClaimTextBox.Value, Chr(13) + Chr(10), Chr(10)) Me.Hide End Sub Private Sub UserForm_Initialize() If myLot.HoldClaimIST <> "" Then ClaimTextBox.Value = myLot.HoldClaimIST End If End Sub
Das Objekt Lot wird in der normalen Sub Test wieder gebraucht. Mit dem Formular wird lediglich ein Wert des Objekts gesetzt. Wie kann ich also im Formular auf das Objekt zugreifen? Nur leider funktioniert dies so nicht wie ich es geschrieben habe. An den fett markierten Stellen kommt es zum Fehler, dass kein Objekt vorhanden ist. Kann mir jemand weiterhelfen, oder ist mein Vorhaben gar nicht möglich mit VBA? Grüsse, skyzem ------------------ MfG skyzem Wir mögen Menschen, die frisch heraus sagen, was sie denken - falls sie dasselbe denken wie wir. isleofwords.com - shortstorys in between Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 05. Dez. 2013 15:02 <-- editieren / zitieren --> Unities abgeben: Nur für skyzem
Hi skyzem, hast du es schon einmal mit einer öffentlichen (public) Variablen oder einer Eigenschaft (analog zu Get/Set) probiert? Grüße und HTH Tobias ------------------ Besucht mich doch mal in meiner Tischlerei "...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder "...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
skyzem Mitglied
Beiträge: 400 Registriert: 30.08.2006 Win 7 Enterprise x64 Cornerstone 5.3.0.5 Minitab 16.2.1.0 Excel 2010 Notepad++ 6.3.1 Putty 0.63 Calc.exe
|
erstellt am: 05. Dez. 2013 15:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, Ja, daran habe ich schon gedacht, aber dann müsste ich wieder von meinem Objekt abkommen und es erst danach wieder mit Werten belegen. Jetzt habe ich aber den Geistesblitz gehabt, das Objekt "Fomular" auch als solches zu nutzen Dein Vorschlag mit globalen Variabeln hat mich darauf gebracht! Danke! Der Code sieht nun wie folgt aus: (ClaimMemo ist mein Forumlar) Code: Sub test() Dim myLot As Lot Set myLot = New Lot myLot.ID = Selection.Value If Not myLot.Valid Then End ClaimMemo.myTextInput = Replace(ClipToString, Chr(13) + Chr(10), Chr(10)) ClaimMemo.Show myLot.HoldClaimSOLL = ClaimMemo.myTextOutput End Sub
Das Formlar sieht so aus:
Code: Public myTextOutput As String Public myTextInput As StringPrivate Sub Cancel_Click() Me.Hide End End Sub Private Sub OK_Click() myTextOutput = Replace(ClaimTextBox.Value, Chr(13) + Chr(10), Chr(10)) Me.Hide End Sub Private Sub UserForm_Initialize() If myTextInput <> "" Then ClaimTextBox.Value = myTextInput End If End Sub
Das Objekt Lot bleibt unverändert... Alles ist wieder i.O.! Danke ------------------ MfG skyzem Wir mögen Menschen, die frisch heraus sagen, was sie denken - falls sie dasselbe denken wie wir. isleofwords.com - shortstorys in between Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bst Mitglied
Beiträge: 192 Registriert: 31.08.2004 .
|
erstellt am: 06. Dez. 2013 08:31 <-- editieren / zitieren --> Unities abgeben: Nur für skyzem
|
skyzem Mitglied
Beiträge: 400 Registriert: 30.08.2006 Win 7 Enterprise x64 Cornerstone 5.3.0.5 Minitab 16.2.1.0 Excel 2010 Notepad++ 6.3.1 Putty 0.63 Calc.exe
|
erstellt am: 06. Dez. 2013 16:37 <-- editieren / zitieren --> Unities abgeben:
Danke bst! Das ist selbstverständlich auch eine elegante Lösung. Wohl einiges eleganter als meine eigene :-) Gruss! ------------------ MfG skyzem Wir mögen Menschen, die frisch heraus sagen, was sie denken - falls sie dasselbe denken wie wir. isleofwords.com - shortstorys in between Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |