Scorrere tra un un intervallo non contiguo di celle

Stefania deve sviluppare una macro che eseguirà un’operazione basata sulle celle che un utente seleziona prima di eseguire la macro. Sa come eseguire questa operazione se l’utente seleziona un intervallo di celle, ma non sa come scorrere le celle in una selezione se l’utente seleziona un intervallo di celle non contiguo.

Quando si tratta di VBA, c’è pochissima differenza tra una selezione contigua e una selezione non contigua. Excel ti consente di accedere ad entrambi nello stesso modo. Considera il seguente frammento di 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)

 

 

In questo caso le celle nell’intervallo selezionato vengono spostate, una alla volta, utilizzando il ciclo For… Next. All’interno del ciclo la variabile c rappresenta una singola cella e può essere utilizzata nei riferimenti, come mostrato.

Se, per qualche motivo, desideri accedere a ciascuna area contigua all’interno della selezione, puoi farlo rivolgendoti specificamente alla collezione Areas, come mostrato in questo frammento:

 

Dim a As Range
Dim c As Range

For Each a In Selection.Areas
    'Ora ogni a si riferisce ad un intervallo contiguo
    'Qui fai qualcosa con le aree, se lo desideri
    For Each c In a.Cells
        'Ora ogni c si riferisce ad una cella dell'area
        'Fai qualcosa qui
        MsgBox c.Address & vbTab & c.Value
    Next c
Next a

 

 

Si noti inoltre che se l’intervallo a cui si desidera accedere (contiguo o non contiguo) è stato denominato in Excel, è possibile accedere anche solo alle celle nell’intervallo denominato. Sostituisci semplicemente la parola “Selection” in ciascuno di questi esempi con il nome dell’intervallo, in questo modo:

 

Dim c As Range

For Each c In Range("MioIntervalloDenominato")
    ' fai qualcosa qui
    MsgBox c.Address & vbTab & c.Value
Next c

 

 

 

Tags: , , , , , , , , ,

Ti è stato utile?