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.
(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.
(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.