Un modulo è una raccolta di funzioni e sub-routine simili, raggruppate di solito in termini di funzionalità.
In una subroutine/funzione modulo, Private: Le funzioni e le routine secondarie sono disponibili solo all'interno di tale modulo. Pubblico: sono accessibili da qualsiasi luogo, direttamente. (Un altro modulo, diversa macro, ecc.) È prassi comune memorizzare le funzioni di utilità nei moduli.
Option Private Module
, che rende il modulo stesso privato può essere aggiunto alla parte superiore di ogni modulo standard, ma non è consentito su un modulo di oggetto, come ThisWorkbook o Foglio1, ecc
ThisWorkbook è un modulo privato dell'oggetto Workbook. Ad esempio, Workbook_Open(), Workbook_Close() routine, risiedono in questo modulo. (Workbook Object Reference)
Analogamente, Sheet1, Sheet2 sono moduli private dei singoli fogli. In essi, inseriresti funzioni specifiche per quel foglio. Worksheet_Activate, Worksheet_Deactivate, Workbook_SheetChange sono eventi di default forniti all'utente, in modo da poterli gestire, nell'ambito delle rispettive foglio moduli private. (Worksheet Object Reference)
Come ha detto @ Daniel Cook nei commenti, mentre i moduli del foglio di lavoro ThisWorkbook e non sono disponibili per essere utilizzati direttamente come subName()
o functionName()
all'esterno del modulo, è ancora possibile chiamare utilizzando ThisWorkbook.subName()
o ThisWorkbook.functionName()
Un modulo di classe è il più vicino possibile raggiungere OOP in VBA. Hanno costruttori, distruttori e possono essere istanziati per darti oggetti di classe.
+1 buoni dettagli –
Quando ho detto "modulo privato", non intendevo che le sue funzioni e metodi sarebbero inaccessibili dall'esterno. Solo che quel modulo appartiene all'oggetto WorkSheet o all'oggetto Workbook. L'accessibilità è impostata per metodi e subroutine usando solo Pubblico/Privato. –
Hai vinto, il mio commento è inutile e lo sto rimuovendo ... e lo rimuoverò presto. –