Prozeduraufruf bei variablem Modulnamen
07.01.2021 19:47:43
Miguel
bisher habe ich Daten immer in mehreren Tabellenblättern eingetragen, die ich mit xlveryhidden vor Benutzerzugriff geschützt habe.
Jetzt habe ich mir überlegt, daß ich dafür theoretisch ja auch Arrays verwenden könnte. Dazu erstmal zwei grundlegende Fragen:
1. Ist es überhaupt sinnvoll statische Daten in Form von ziemlich umfangreichen Arrays anzulegen? Oder sollte ich vielleicht die Daten besser in Textdateien speichern und diese in Excel einlesen? Oder gar mit Access?
2. Wenn ich das mit Arrays mache, wo lege ich die hin? In ein allgemeines Modul? Denn wenn ich dafür Worksheets anlegen müßte, könnte ich ja auch gleich die Daten da rein schreiben...
Ich müßte, um die Übersicht zu behalten, verschiedene Daten in verschiedenen Arrays in verschiedenen Modulen anlegen. Da kommen welche dazu oder werden auch mal gelöscht. Deshalb müßten alle Verweise darauf dynamisch sein, damit ich nicht jedesmal im Code rumbasteln muß, um die Verweise anzupassen. Bisher habe ich bei Workbook_Open alle Tabellen mit bestimmten Namensanfang in einem UserForm Kombinationsfeld aufgelistet, davon eines ausgewählt und ausschließlich die Daten aus der Tabelle werden dann benutzt.
Geht das analog dazu auch bei Modulen?
Ein weiteres Problem besteht darin, daß ich den Modulen nicht denselben Namen geben kann wie der, der im Kombinationsfeld stehen soll, weil Bindestriche vorkommen.
Eine Tabelle kann ich noch mit ThisWorkbook.Worksheets(4). ansprechen, auch wenn der eigentliche Name ein ganz anderer ist. Wie mach ich das bei Modulen?
Ich habe also 3 Module
Irgendwas1
Irgendwas2
Irgendwas3
mit Daten in Arrays und würde bei Workbook_Open alle Module durchsuchen, deren Name mit "Irgendwas" beginnt. In jedem dieser Module müßte eine Prozedur sein, die den eigentlichen Namen dem Kombinationsfeld hinzufügt.
Der-eigentliche-Name-von-Irgendwas1
Der-eigentliche-Name-von-Irgendwas2
Der-eigentliche-Name-von-Irgendwas3
Davon wird eine ausgewählt und alle Verweise in der Arbeitsmappe müßten sich dann auf dieses Modul beziehen.
Sowas wie:
Dim ModulName As String
ModulName = Irgendwas1
Call ModulName & .MachWas
geht wohl nicht.
Ich hoffe, ich konnte mein Problem halbwegs verständlich darlegen und wäre für alle nützlichen Hinweise dankbar.
Vielen Dank für die Aufmerksamkeit und viele Grüße
Miguel