Michele ha una macro che stampa una serie di fogli di lavoro. Occasionalmente uno o due dei fogli di lavoro da stampare potrebbero non contenere dati. Sta cercando una tecnica per verificare se un foglio di lavoro contiene dati e quindi stampare solo i fogli non vuoti.
Esistono diversi modi per testare se un foglio di lavoro è vuoto. Certo, dipende da cosa intendi veramente per “vuoto”, almeno in una certa misura. Ad esempio, se un foglio di lavoro non contiene assolutamente nulla, niente in nessuna cella del foglio di lavoro, potremmo considerarlo vuoto. Tuttavia, potresti avere un foglio di lavoro che contiene alcune intestazioni di colonna che hai aggiunto, ma nient’altro tranne quelle intestazioni. Mentre Excel considererebbe il foglio di lavoro non vuoto, potresti considerarlo vuoto ai fini della stampa.
Forse il modo più semplice per verificare se un foglio di lavoro è vuoto è utilizzare l’oggetto UsedRange per determinare cosa c’è nel foglio di lavoro:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Si noti che l’oggetto UsedRange è costituito, beh, dall’intervallo di celle utilizzate all’interno di un foglio di lavoro. Pertanto, se il conteggio delle righe in questo intervallo è 1 e il conteggio delle colonne in questo intervallo è 1 e non è presente nulla nella prima cella dell’oggetto UsedRange, è probabile che il foglio di lavoro sia vuoto.
A seconda delle caratteristiche dei tuoi dati, potresti essere in grado di accorciare ulteriormente il codice:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
In questa versione stai semplicemente controllando se il conteggio delle celle nell’oggetto UsedRange è 1 e se quella particolare cella è vuota.
Se hai una riga di intestazione (o due) nel tuo foglio di lavoro, puoi adattare questa tecnica a tutte le righe e le colonne che hai in quelle intestazioni. Ad esempio, se hai intestazioni nell’intervallo A1: F4, puoi modificare la tecnica in questo modo:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Non è necessario controllare il contenuto di A1 in questa istanza perché sai già che esso (e molte altre celle) contengono informazioni: le tue intestazioni. Vuoi solo ignorare quelle intestazioni per determinare se ci sono informazioni aggiuntive nel foglio di lavoro.
Se il foglio di lavoro è completamente vuoto (nessuna intestazione), puoi utilizzare la funzione del foglio di lavoro CountA per analizzare le celle nel foglio di lavoro. Se il risultato della funzione è maggiore di zero, il foglio di lavoro non è vuoto. Ad esempio, supponiamo che il foglio di lavoro che desideri analizzare sia specificato dall’oggetto sht. Puoi usare questa tecnica in questo modo:
IsSheetEmpty = Application.WorksheetFunction.CountA(sht.Cells) = 0
Naturalmente, è possibile che un foglio di lavoro contenga elementi diversi dalle informazioni nelle celle. Se sospetti di avere questi tipi di oggetti in un foglio di lavoro (cose come forme automatiche, grafici o grafici incorporati), allora i tuoi test per il “vuoto” dovranno essere più completi. Ciascuno di questi elementi è contenuto all’interno di collezioni accessibili in VBA ed è possibile controllare la proprietà Count per ciascuna collezione per vedere se è pari zero oppure no.