Welchen Unterschied macht es, wenn man einen VBA-Code in "Sheets", in "ThisWorkbook" und in "Modules" ausführt?

8

Welchen Unterschied macht es, wenn man einen VBA-Code in "Sheets" ("Sheet1", "Sheet2" usw.), in "ThisWorkbook" und in "Modules" ("Module1" etc) ausführt?

Mit anderen Worten, welche sollte in welchen Fällen verwendet werden?

    
Mehper C. Palavuzlar 18.10.2012, 13:07
quelle

2 Antworten

10

Ein Modul ist eine Sammlung ähnlicher Funktionen und Unterroutinen, die normalerweise nach ihrer Funktionalität gruppiert sind.

In einem Modul-Unterprogramm / Funktion Privat : Funktionen und Unterprogramme sind nur innerhalb dieses Moduls verfügbar. Öffentlich : Sie können von überall direkt darauf zugreifen. (Ein anderes Modul, anderes Makro usw.) Es ist üblich, Dienstprogrammfunktionen in Modulen zu speichern.

Option Private Module , was dazu führt, dass das Modul selbst privat ist, kann oben in jedem Standardmodul hinzugefügt werden, ist aber für ein Objektmodul wie ThisWorkbook oder Sheet1 usw. nicht erlaubt.

ThisWorkbook ist ein privates Modul des Arbeitsmappenobjekts. Zum Beispiel befindet sich die Workbook_Open () , Workbook_Close () -Routine in diesem Modul. ( Referenz zum Arbeitsmappenobjekt )

Ebenso sind Sheet1, Sheet2 private Module der einzelnen Sheets. In ihnen würden Sie spezifische Funktionen für dieses Blatt einfügen. Worksheet_Activate , Worksheet_Deactivate , Workbook_SheetChange sind Standardereignisse, die Ihnen zur Verfügung gestellt werden, damit Sie sie innerhalb des entsprechenden privaten Arbeitsblatts Module. ( Worksheet-Objektreferenz )

Wie @Daniel Cook in den Kommentaren sagte, während ThisWorkbook und die Module des WorkSheets nicht zur direkten Verwendung als subName() oder functionName() außerhalb des Moduls verfügbar sind, ist es immer noch möglich, sie mit ThisWorkbook.subName() oder% aufzurufen. co_de%

Ein Klassenmodul ist dem OOP in VBA am nächsten. Sie haben Konstruktoren, Destruktoren und können instanziiert werden, um Ihnen Klassenobjekte zu geben.

    
Anirudh Ramanathan 18.10.2012 13:21
quelle
0

Ich weiß zumindest, dass Modules ausgeführt werden muss und ThisWorkBook für Ereignisse wie SheetChange event etc.

verwendet wird

Gemeinsamer Code wird in ThisWorkBook ausgegeben:

%Vor%

Diese Frage ist auch hier schon beantwortet:

Ссылка

    
Mike Kellogg 18.10.2012 13:19
quelle

Tags und Links