Parlando di variabili ciò che può influire sulla pesantezza dell'eseguibile è la durata della loro "vita"... che non sempre ha a che fare con la loro visibilità: due variabili LONG (una public e l'altra private) definite nella sezione dichiarazioni di un modulo BAS, occuperanno memoria per l'intera durata dell'applicazione pur non essendo entrambi visibili da tutto il progetto.
Diciamo che è sempre meglio evitare l'uso di variabili pubbliche soprattutto quando queste vengono utilizzate per scambiare dati tra i moduli. In questi casi è meglio privilegiare il passaggio dei valori tramite argomenti di funzioni (o subs) eliminando così qualsiasi dipendenza tra i moduli.
Per quanto riguarda le prestazioni durata e visibilità delle variabili non contano: la cosa importante è evitare le conversioni implicite che obbligano VB a fare troppo lavoro inutile in più.
Il discorso della quantità di memoria utilizzata richiederebbe moltissimo spazio per essere discusso. Posso dirti che per le variabili dinamiche locali a procedure (quindi anche argomenti di funzioni) il compilatore svolge un'enorme lavoro di ottimizzazione al fine di risparmiare memoria... e ci riesce magistralmente.
Le variabili statiche invece vengono risparmiate da questa ottimizzazione, così assumono gli stessi pregi/difetti di variabili con visibilità a livello di modulo. Le variabili globali, come ho già detto e come è ben noto, andrebbero sempre evitate.
Ciao
Simo