Sagen wir, ich möchte ein Fahrrad-Designer-Programm in Excel VBA machen. Ich habe ein Klassenobjekt (cBike
), das einige Standardeinstellungen hat. Jetzt möchte ich ein Formular erstellen (wie das im Bild), mit dem diese Einstellungen geändert werden können, bevor das Fahrrad in der Datenbank gespeichert wird. Die Methode (Sub) zum Speichern befindet sich in cBike
.Preserve Class Module in Form
Ich konnte das Objekt als öffentliche Variable in Form Code wie folgt erhalten:
Public objBike As cBike
Public Sub StoreBikeToDatabase()
'database storing code goes here
End Sub
Während das funktionieren würde, ich habe viele Leute gesehen, die sich gegen die Verwendung von öffentliche (globale) Variablen. Ich bin nicht ganz sicher, warum, außer dass, wenn Sie zu viele globale Variablen haben, Ihr Code ein Durcheinander sein wird.
Alternativ könnte ich das Objekt vergessen und die Werte aus den verschiedenen Formularsteuerelementen anstelle der Eigenschaften des Klassenmoduls cBike
verwenden. Dies scheint jedoch eine etwas ungeschickte Lösung zu sein.
Meine Frage ist: Welche der oben genannten Lösungen sind die besten, wenn überhaupt? Und wenn keiner von ihnen, was sollte ich stattdessen tun?
Update: Ich würde dringend vorschlagen, dass Sie sowohl die angenommene Antwort, als auch die durch dee weiter unten lesen. Beide Antworten haben einige großartige Ideen und dee's Beitrag enthält zusätzlich einige umfassende Codebeispiele, die für andere mit ähnlichen Fragen verwendet werden können.
Sie könnten die drei Werte auf dem Formular in dem Eigentum machen, zusammen mit einer Cancelled-Eigenschaft, die von dem anrufenden Code gelesen/geschrieben werden, die Pflege des von der Aktualisierung dauert ' cBike' Objekt nach Bedarf. – Rory
Es hängt davon ab, wo und warum Sie diese Daten speichern müssen (im Speicher und nicht in der Datenbank). Wenn Sie jedes Mal nur eine neue Instanz der Klasse erstellen, die Eigenschaften bearbeiten und in einer Datenbank speichern, sollten Sie wahrscheinlich eine 'private' Instanz von' cBike' innerhalb des Formulars erstellen oder ein bereits erstelltes 'cBike' an das Formular übergeben bevor ich es zeige. – GSerg
Die Idee war, dass ich eine bereits erstellte Instanz von 'cBike' an das Formular übergeben musste, das dieses Objekt dann speichert, bis es gespeichert werden muss. Eigenschaften von 'cBike' können vom Formular geändert werden, nachdem es an das Formular übergeben wurde, aber bevor es in der Datenbank gespeichert wird. – Noceo