Welchen Unterschied macht es, wenn man läuft ein VBA-code in "Blätter", in "DieseArbeitsmappe" und in "Module"?
Welchen Unterschied macht es, wenn man läuft ein VBA-code in "Blätter" ("Tabelle1", "Tabelle2", usw.), in "DieseArbeitsmappe" und in "Module" ("Modul1", etc.)?
In anderen Worten, die verwendet werden soll, in welchen Fällen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Module ein Modul ist eine Sammlung von ähnlichen Funktionen und sub-Routinen, gruppiert, meist in Bezug auf Ihre Funktionalität.
In einem Modul Unterprogramm/Funktion,
Private : - Funktionen und Sub-Routinen werden nur innerhalb dieses Moduls.
Öffentlichen : Sie können von überall abgerufen werden, direkt. (Anderes Modul, andere makro etc)
Es ist übliche Praxis, store utility-Funktionen in Modulen.
Option Private Module
), wodurch das Modul sich selbst private können Hinzugefügt werden, an der Spitze von standard-Modul, aber ist nicht erlaubt, auf ein Objekt-Modul, wie DieseArbeitsmappe oder Tabelle1, usw.ThisWorkbook ist ein eigenes Modul der Arbeitsmappe-Objekt.
Zum Beispiel, Workbook_Open(), Workbook_Close() routine, befinden sich in diesem Modul. (Arbeitsmappe-Objekt-Referenz)
Ähnlich, Tabelle1, Tabelle2 private Module der einzelnen Blätter. In Ihnen würde man in bestimmte Funktionen auf das Blatt.
Worksheet_Activate, Worksheet_Deactivate, Workbook_SheetChange sind Standard-Veranstaltungen zur Verfügung gestellt, um Sie, so dass Sie behandeln können Sie, innerhalb der jeweiligen privaten Blatt Module. (- Arbeitsblatt-Objekt-Referenz)
Als @Daniel Cook sagte in den Kommentaren, während "DieseArbeitsmappe" und das Arbeitsblatt s-Module sind nicht für die direkte Verwendung als
subName()
oderfunctionName()
außerhalb des Moduls, ist es immer noch möglich, Sie zu nennen mitThisWorkbook.subName()
oderThisWorkbook.functionName()
Einem Klassenmodul ist die nächstgelegene Sie bekommen können, um OOP in VBA. Sie haben Konstruktoren, Destruktoren, und instanziiert werden können, um Ihnen die Objekte der Klasse.
Option Private Module
darf nicht in ein Objekt-Modul. Hinzufügen, dass zu der Antwort. Danke.Weiß ich wenigstens, dass
Modules
ausgeführt werden müssen undThisWorkBook
wird für Veranstaltungen genutzt wieSheetChange
Veranstaltung, etc.Common code ausspucken in
ThisWorkBook
:diese Frage ist auch schon beantwortet hier:
http://www.pcreview.co.uk/forums/macro-module-function-sub-and-workbook-and-sheets-t980275.html