Michael 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 stampa solo quei fogli di lavoro.

Esistono diversi modi per eseguire il test di un foglio di lavoro vuoto.

Ovviamente dipende da cosa intendi veramente per “vuoto”, almeno fino a un certo punto. 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 che quelle intestazioni. Sebbene Excel consideri il foglio di lavoro non vuoto, potresti considerarlo vuoto per scopi di stampa.

Forse il modo più semplice per verificare se un foglio di lavoro è vuoto è usare l’oggetto UsedRange per determinare cosa c’è nel foglio di lavoro:

IsSheetEmpty = ActiveSheet.UsedRange.Rows.Count=1 _   AND ActiveSheet.UsedRange.Columns.Count=1 _   AND Cells(1,1).Value=""

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 c’è nulla nella cella A1, il foglio di lavoro è probabilmente vuoto.

Se hai una riga di intestazione (o due) nel tuo foglio di lavoro, puoi adattare questa tecnica alle righe e alle colonne che hai in quelle intestazioni. Ad esempio, se hai intestazioni nell’intervallo A1: F4, potresti modificare la tecnica in questo modo:

IsSheetEmpty = ActiveSheet.UsedRange.Rows.Count=4 _   AND ActiveSheet.UsedRange.Columns.Count=6

Non è necessario controllare il contenuto di A1 in questo caso perché sai già che esso (e molte altre celle) contengono informazioni: le tue intestazioni. Vuoi solo ignorare tutto in quelle intestazioni per determinare se ci sono informazioni aggiuntive nel foglio di lavoro.

Se il foglio di lavoro è completamente vuoto (nessuna informazione di intestazione che hai aggiunto), puoi usare 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, grafica o grafici incorporati), allora il tuo test per il “vuoto” dovrà essere più completo. Ciascuno di questi elementi è contenuto all’interno di raccolte accessibili in VBA ed è possibile controllare la proprietà Count per ogni raccolta per vedere se è zero o meno.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (3280) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: