Hallo Wissende,
ich hatte vorhin die andere Hälfte meiner Frage vergessen:
Mein Programm ist eine Funktion auf Modul1. Sie wird aufgerufen, indem der Anwender eine Schaltfläche auf einem Sheet bedient.
Das Programm greift auf verschiedene Sheets und dort auf verschiedene Zellen zu. Die Koordinaten der auszulesenden Zellen sind nicht hartcodiert, sondern über Konstanten geregelt. (Falls mal das Layout der Tabellen sich verändert, muss ich nur die Konstante ändern). Da kommen aber schnell mal 50 Konstanten zusammen.
Nun ist die Funktion aber schon ellenlang und unübersichtlich. Ich würde gern Blöcke auslagern, wie z.B.
Option Explicit
Function MeineFunktion()
Konstanten\_zur\_Feldlokalisierung\_laden
Daten\_lesen\_und\_auf\_Ergebnisseite\_zusammenstellen
With Ergebnisseite
Rechnung\_1\_durchführen
Rechnung\_2\_durchführen
Daten\_in\_anderes\_Workbook\_schreiben
EndWith
End Function
sub Konstanten\_zur\_Feldlokalisierung\_laden ()
Public const Wert1Zeile=3
Public const Wert2Zeile=13
...
end sub
Nun meine Fragen:
-
das Auslagern der Konstantendefinition funktioniert nicht - oder ich mache was falsch. Ganz egal, was ich probiere, die Konstante ist weder im Hauptprogramm, noch in den anderen Subs bekannt. Ich weiss, ich könnte auch Werte übergeben, aber das wird bei 50 Konstanten eine riesige Liste. Wie kann ich erreichen, dass die Konstanten im ganzen Modul bekannt sind, ohne immer zu übergeben ?
-
Die Ergebnisseite ist der Dreh- und Angelpunkt des Makros. Ich würde gern in der Struktur der Hauptfunktion klar machen, dass es jetzt um dieses Blatt geht (durch With Ergebnisseite) und dann in den Unterroutinen nur noch mit .Cells(x,y) arbeiten. Aber auch das klappt nicht wie ich mir das vorstelle.
Ich denke, dass das beides möglich ist, aber finde weder in der Hilfe noch im Internet eine direkte Antwort.
Vielen Dank für eure Hilfe
Hans-Jürgen