Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1804to1808
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prozeduraufruf bei variablem Modulnamen

Prozeduraufruf bei variablem Modulnamen
07.01.2021 19:47:43
Miguel
Servus,
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prozeduraufruf bei variablem Modulnamen
07.01.2021 20:33:21
onur
Hääääh?
Verschiedene Module für verschiedene Arrays? Was soll DAS denn ?
Wenn du Bereiche in Arrays packen willst, dekarierst du die Arrays als Public und du kannst von JEDEM Modul (inkl. der Module der Blätter) auf sie zugreifen, solange dein Code nicht irgendwo mit "End" beendet wird.
AW: Prozeduraufruf bei variablem Modulnamen
07.01.2021 21:04:46
onur
Statt hier die Probleme bei DEINEM Lösungsversuch des Problems zu posten, solltest du besser das Problem selbst erläutern. Soll heissen: Wozu das Ganze? Was willst du mit diesen Arrays erreichen bzw wozu brauchst du sie GENAU ?
AW: Prozeduraufruf bei variablem Modulnamen
07.01.2021 21:43:05
Miguel
Noch habe ich ja kein Problem und die wirklichen Probleme haben ganz bestimmt nix mit VBA zu tun. Ich stelle lediglich ein paar Überlegungen an, wie ich das ganze angehen kann.
Ich habe wie bereits geschrieben die Daten bisher in Tabellen und würde die stattdessen in Arrays schreiben wollen.
Das könnte so aussehen:
Sub Golf()
Dim AllgemeineDaten(1, 1) As String
AllgemeineDaten(0, 0) = "Hersteller"
AllgemeineDaten(1, 0) = "Volkswagen"
AllgemeineDaten(0, 1) = "Fahrzeugart"
AllgemeineDaten(1, 1) = "Personenkraftwagen"
Dim Leistungsdaten(1, 2) As String
Leistungsdaten(0, 0) = "Hubraum"
Leistungsdaten(1, 0) = "1800"
Leistungsdaten(0, 1) = "Zylinder"
Leistungsdaten(1, 1) = "4"
Leistungsdaten(0, 2) = "Leistung"
Leistungsdaten(1, 2) = "90"
End Sub
Sub L2000()
Dim AllgemeineDaten(1, 1) As String
AllgemeineDaten(0, 0) = "Hersteller"
AllgemeineDaten(1, 0) = "MAN"
AllgemeineDaten(0, 1) = "Fahrzeugart"
AllgemeineDaten(1, 1) = "Lastkraftwagen"
Dim Leistungsdaten(1, 2) As String
Leistungsdaten(0, 0) = "Hubraum"
Leistungsdaten(1, 0) = "12500"
Leistungsdaten(0, 1) = "Zylinder"
Leistungsdaten(1, 1) = "10"
Leistungsdaten(0, 2) = "Leistung"
Leistungsdaten(1, 2) = "430"
End Sub

Nur, daß das in Wirklichkeit sehr viel länger wird und eine Prozedur ja eine endliche Länge hat. Klar könnte ich das alles ins gleiche Modul schreiben, jedes Array in eine eigene Prozedur, aber das wird dann bei der Datenpflege sehr unübersichtlich. Und ich brauche ja immer nur die Daten von einem hier im Beispiel Auto, nämlich von dem, das im Kombinationsfeld ausgewählt ist. Die Arrays sollen vom Aufbau her für jedes Auto identisch sein, nur die Daten unterscheiden sich. Wenn ich es in verschieden Module packte, könnte ich vielleicht alle Module umbenennen, so daß das ausgewählte, dem Verweis entspricht.
Anzeige
AW: Prozeduraufruf bei variablem Modulnamen
07.01.2021 21:45:23
onur
Aber WARUM schreibst du das umständlich in den Code statt in ein Blatt?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige