Hallo Wilhelm!
als ich Deinen Beitrag gelesen hatte, fiel mir sofort ein, daß
ich das alles schon mal gewußt aber vergessen habe, herzlichen
Dank.
Da nich’ für.
Was ist ein g l o b a l e s Modul?
Wenn Du unter VBA Code in ein Formular packst (z. B. die Reaktion auf einen Klick auf eine Schaltfläche), dann landet der in einem Formularmodul. Generell ist erst mal alles in diesem Modul nur in diesem Modul sichtbar. Wenn die Funktionen wie beschrieben als Public deklariert sind, können sie jedoch mit der Referenzierung des zugehörigen Formular-Modulnamens aufgerufen werden.
Du hast in Deinem Projektexplorer ja diverse Formulare/UserForms. Und dann gibt es noch eine Kategorie „Module“. Dies sind die globalen Module. In diese sollten Funktionen geschrieben werden, die vom „umgebenden“ Formular unabhängig sind und auch in anderen Formularen oder Zusammenhängen verwendet werden oder verwendet werden könnten.
Als Beispiel: Im Formularmodul sollten i. d. R. nur die Ereignisroutinen stehen, die die Benutzerinteraktion steuern. Eine Funktion, die Dir z. B. anhand zweier Werte „Betrag“ und „MwSt-Satz“ den Gesamtbetrag ausrechnet, ist jedoch nicht nur in einem Formular „Rechnungserstellung“ verwendbar, sondern auch in „EingangsrechnungErfassen“ und überall sonst in einer Büro- undLagerverwaltung sinnvoll und gültig. Daher kommt diese Funktion in ein globals Modul, muss nur an einer Stelle gepflegt werden, kann aber von jeder Stelle aus aufgerufen werden.
Und was ist eine Klasse, Bücher lesen hat bisher nicht
geholfen.
Da reißen wir die Objektorientierung an. Ein Modul kennt ja i. d. R. nur Funktionen, Prozeduren und globale Variablen. Diese haben zunächst mal recht atomare Typen (div. Zahlen wie Long, Integer, Strings etc.). Ein wenig komplexere Typen kann man sich selbst bauen mit dem Type-Konstrukt. Diese Typen haben bestimmte „Attribute“; man könnte sich einen Typ „ADRESSE“ definieren, bestehend aus einem String für Strasse, PLZ und Ort. Dieser Typ wäre schon einmal ein wenig aussagekräftiger (und vor allem zusammengehörend) als drei getrennte Variablen.
Geht man jetzt noch einen Schritt weiter, kann man so was auch in Klassen kapseln, die neben Attributen auch noch „Methoden“ (quasi Funktionen und Prozeduren) haben, die das Arbeiten mit dem neuen „Objekt“ ermöglichen.
Das so als ganz kurzer Einstieg… Zur weiteren Suche müsstest Du Dich mit Objektorientierung genauer auseinandersetzen.
Gruß, Manfred