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:

With ActiveSheet.UsedRange     IsSheetEmpty = .Rows.Count = 1 And _       .Columns.Count = 1 And _       .Cells(1,1) = ""

End With

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 prima cella dell’oggetto UsedRange, il foglio di lavoro è probabilmente vuoto.

A seconda delle caratteristiche dei tuoi dati, potresti essere in grado di abbreviare ulteriormente il codice:

With ActiveSheet.UsedRange     IsSheetEmpty = .Count = 1 And .Cells(1,1) = ""

End With

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 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 (9637) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia di menu precedente di Excel qui: