Aufrufe von Klassen untereinander
Hallo Forum,
in meinem Projekt habe ich folgendes Konstrukt:
Eine Klasse "Import" besitzt eine Funktion "StatusfensterNeu", die ein Formular aus einer Klasse "Statusfenster" anzeigt. Jetzt habe ich eine neue Klasse "Vergleich" angelegt, die ebenfalls das Formular anlegt. Der Code dazu sieht verkürzt wie folgt aus:
Public Class Import
Dim mbo_StatusFenster As StatusFenster
Dim m_Status as String
...
Public Sub WordImport()
mbo_StatusFenster = New StatusFenster
m_status = MboStatusfensterNeu("Alte Daten löschen", "1/15: ", 100)
...
End Sub
Public Function MboStatusfensterNeu(q As String, switch As String, fortschritt As Double) As String
...
If mbo_StatusFenster.Visible = False Then mbo_StatusFenster.Show
...
End Sub
End Class
Jetzt habe ich eine neue Klasse "Vergleich", die ebenfalls dieses Statusfenster anzeigen soll. Mein Code sieht wie folgt aus:
Public Partial Class Vergleich
Dim mbo_StatusFenster As StatusFenster
Dim m_Status as String
Dim mbo_Import As New Import
...
Sub Tabellen_vergleichen
mbo_StatusFenster = New StatusFenster
m_status = mbo_Import.MboStatusfensterNeu("Alte Daten löschen", "1/15: ", 100)
...
End Sub
End Class
Ich bekomme jedoch immer eine Fehlermeldung, dass der Verweis nicht auf eine Objektinstanz gelegt wurde. Die Funktion MboStatusfensterNeu wird jedoch aufgerufen, da ich dort noch eine temporäre MsgBox anzeigen lassen kann. Will ich jedoch das Formular anzeigen, bricht das Makro ab. Irgendwie wird die Klasse StatusFenster nicht korrekt erkannt. Wie muss ich meinen Code umstellen, damit das Ganze funktioniert?
Vielen Dank,
M. Born
in meinem Projekt habe ich folgendes Konstrukt:
Eine Klasse "Import" besitzt eine Funktion "StatusfensterNeu", die ein Formular aus einer Klasse "Statusfenster" anzeigt. Jetzt habe ich eine neue Klasse "Vergleich" angelegt, die ebenfalls das Formular anlegt. Der Code dazu sieht verkürzt wie folgt aus:
Public Class Import
Dim mbo_StatusFenster As StatusFenster
Dim m_Status as String
...
Public Sub WordImport()
mbo_StatusFenster = New StatusFenster
m_status = MboStatusfensterNeu("Alte Daten löschen", "1/15: ", 100)
...
End Sub
Public Function MboStatusfensterNeu(q As String, switch As String, fortschritt As Double) As String
...
If mbo_StatusFenster.Visible = False Then mbo_StatusFenster.Show
...
End Sub
End Class
Jetzt habe ich eine neue Klasse "Vergleich", die ebenfalls dieses Statusfenster anzeigen soll. Mein Code sieht wie folgt aus:
Public Partial Class Vergleich
Dim mbo_StatusFenster As StatusFenster
Dim m_Status as String
Dim mbo_Import As New Import
...
Sub Tabellen_vergleichen
mbo_StatusFenster = New StatusFenster
m_status = mbo_Import.MboStatusfensterNeu("Alte Daten löschen", "1/15: ", 100)
...
End Sub
End Class
Ich bekomme jedoch immer eine Fehlermeldung, dass der Verweis nicht auf eine Objektinstanz gelegt wurde. Die Funktion MboStatusfensterNeu wird jedoch aufgerufen, da ich dort noch eine temporäre MsgBox anzeigen lassen kann. Will ich jedoch das Formular anzeigen, bricht das Makro ab. Irgendwie wird die Klasse StatusFenster nicht korrekt erkannt. Wie muss ich meinen Code umstellen, damit das Ganze funktioniert?
Vielen Dank,
M. Born
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 239921
Url: https://administrator.de/contentid/239921
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
7 Kommentare
Neuester Kommentar
Moin Marco,
Und bitte benutze Code-Tags zum Posten deiner Codes.
Merci.
Grüße Uwe
Zitat von @MarcoBorn:
Gibt es hier keinen, der mir einen Tipp geben kann, wie ich den Code umbauen muss, damit es läuft?
Gibt es schon, wenn du deinen Beitrag entsprechend überarbeitest das ihn jemand verstehen kann, die Klassen sind nicht alle ersichtlich (z.B. fehlt die Definition der Klasse StatusFenster, etc). Hier fehlt dem helfenden absolut der Zusammenhang und wichtige Bestandteile deiner Klassen und das was du vorhast !Gibt es hier keinen, der mir einen Tipp geben kann, wie ich den Code umbauen muss, damit es läuft?
Und bitte benutze Code-Tags zum Posten deiner Codes.
Merci.
Grüße Uwe
Alles klar, du erzeugst das Fenster-Objekt nur in der Prozedur WordImport() die du natürlich vor oder im Aufruf von MboStatusfensterNeu() aufrufen musst damit der Dialog überhaupt erzeugt wird, denn ansonsten ist mbo_StatusFenster leer, und somit trifft die Fehlermeldung den Nagel auf den Kopf !
Alternativ musst du das Fenster schon beim initialisieren der Klasse Import erzeugen damit es in allen Prozeduren in der Klasse zur Verfügung steht.
Alternativ musst du das Fenster schon beim initialisieren der Klasse Import erzeugen damit es in allen Prozeduren in der Klasse zur Verfügung steht.