Come selezionare tutti i fogli di lavoro visibili in una macro di Excel

In Excel, selezionare tutti i fogli di lavoro visibili è facile come fare clic con il pulsante destro del mouse su qualsiasi scheda di foglio e scegliere Seleziona tutti i fogli. Tuttavia, eseguire la stessa attività con il codice VBA è più difficile.

La guida in linea di Excel suggerisce di utilizzare la funzione Array con la collezione Sheets per selezionare i fogli per nome. Funziona alla grande quando conosci i nomi di ogni foglio nella cartella di lavoro. Ciò pone un problema quando si desidera creare codice generico per selezionare tutti i fogli per qualsiasi cartella di lavoro. La buona notizia è che puoi utilizzare una variante della tecnica di Microsoft per fare riferimento ai fogli in base al numero di indice. Di seguito 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.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Funziona alla grande, a meno che la cartella di lavoro non contenga fogli nascosti, dove Sheets(i).Visible = False. Naturalmente, il codice sopra può essere adattato per ignorare i fogli di lavoro nascosti:

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.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Tuttavia, esiste un parametro poco conosciuto del metodo Select: il parametro Replace. Utilizzando il parametro Replace, la selezione di tutti i fogli visibili diventa molto più semplice:

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.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Si noti che mySheet è definito come un tipo di dati Object, invece di un tipo di dati Worksheet. Questo viene fatto perché durante i test ho riscontrato un problema con i fogli grafici: non sarebbero stati selezionati perché non erano di tipo Worksheet.

Tags: , , , , , , , , , , ,

Ti è stato utile?