Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Objekt von Sub an Form übergeben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Objekt von Sub an Form übergeben (1815 mal gelesen)
skyzem
Mitglied



Sehen Sie sich das Profil von skyzem an!   Senden Sie eine Private Message an skyzem  Schreiben Sie einen Gästebucheintrag für skyzem

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 String

Public 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 Sub

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


Sehen Sie sich das Profil von MWN an!   Senden Sie eine Private Message an MWN  Schreiben Sie einen Gästebucheintrag für MWN

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 05. Dez. 2013 15:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für skyzem 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von skyzem an!   Senden Sie eine Private Message an skyzem  Schreiben Sie einen Gästebucheintrag für skyzem

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 String

Private 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



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 06. Dez. 2013 08:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für skyzem 10 Unities + Antwort hilfreich

Morgen,

Lösche die Zeile

Code:
Dim myLot As Lot

weg.

Nimm stattdessen in einem normalen Modul ganz oben außerhalb jeder Sub / Function die Zeile:

Code:
Public myLot As Lot

CU, Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

skyzem
Mitglied



Sehen Sie sich das Profil von skyzem an!   Senden Sie eine Private Message an skyzem  Schreiben Sie einen Gästebucheintrag für skyzem

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz