Come determinare il numero di colonne visibili

Davide ha bisogno di determinare quante colonne siano visibili nella finestra corrente.

Questo è in realtà abbastanza facile da realizzare. Il trucco è ricordare che è necessario lavorare con l’oggetto VisibleRange, che appartiene all’oggetto ActiveSheet. È possibile utilizzare la collezione .Columns per l’oggetto VisibleRange e quindi utilizzare il metodo .Count per tale collezione. Quello che si ottiene è il numero di colonne, 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.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

Sembra semplice, vero? Il problema è che il metodo .Count restituisce il numero di colonne nella collezione indipendentemente dal fatto che siano nascoste o meno. Ad esempio, supponiamo che guardi lo schermo e vedi che mostra le colonne da C a H. Ciò significa che vengono visualizzate 6 colonne, ed è ciò che il metodo .Count restituisce nella macro precedente. Se poi nascondi la colonna F, ora vengono visualizzate le colonne da C a I. Invece di restituire ancora 6 (che rappresenta le colonne C, D, E, G, H e I), .Count ora restituisce 7, che include la colonna nascosta, anche se non è visibile.

La soluzione a questa situazione consiste nel controllare la proprietà .Hidden di ogni colonna nella collezione .Columns. Solo se la proprietà .Hidden è False la colonna dovrebbe essere contata come visibile, 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.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

C’è un altra cosa a cui prestare attenzione con questo approccio: per quanto riguarda VBA, una colonna viene considerata visibile fintanto che viene mostrata anche solo una “fettina” di quella colonna. Inoltre, se prevedi di utilizzare i riquadri nella visualizzazione di Excel, potresti prendere in considerazione l’aggiunta dell’oggetto ActivePane nel mix. Fondamentalmente, ci vuole un semplice cambiamento nelle macro di cui sopra: ovunque vedi l’oggetto ActiveWindow, seguilo con ActivePane, così:

 

For Each c In ActiveWindow.ActivePane.VisibleRange.Columns

 

Ciò garantisce che la tua macro consideri solo il riquadro corrente nella finestra durante il conteggio.

Tags: , , , , , , ,

Ti è stato utile?