Prima di illustrare questo argomento vorrei poter presentare un nuovo metodo che uso in questa applicazione per definire ed utilizzare i riferimenti di celle facendo uso della Proprietà Address.
Questa è la tabella usata per i nostri esercizi.
| Cognome | Nome |
|---|---|
| Di Maggio | Mario |
| Scicchitano | Andrea |
| Maggi | Massimo |
| Edelvisi | Maurizio |
| Gerardini | Silvano |
| Pasotti | Alessio |
| Calvi | Giovanni |
| Poggi | Giuseppe |
| Curti | Oreste |
| Borsotti | Mirella |
| Franchinotti | Anna |
Il metodo Cells(Riga,Colonna)
E' uso comune definire le coordinate di una cella ricercandone la rispettiva riga e colonna come negli esempi seguenti:
| L'ESPRESSIONE | RESTITUISCE |
|---|---|
| PrimaRiga = Range("A2").Row | il numero della riga di A2 |
| PrimaColonna = Range("A2").Column | il numero della colonna di A2 |
| UltimaRiga = Range("A2").End(xlDown).Row | il numero dell'ultima riga della tabella che parte da A2 |
| Ultimacolonna = Range("A1").End(xlToRight).Column | Il numero dell'ultima colonna della tabella che parte A2 |
| URiga = 1 While Cells(URiga , 1) <> "" URiga = URiga + 1 Wend |
un altro modo di trovare l'ultima riga di una tabella che parte da A1 |
Una volta definite le coordinate di riga e/o di colonna, è possibile usarle nei nostri riferimenti come nell'esempio qui di seguito riportati:
Sub provaCells()
Dim PrimaRiga, PrimaColonna, UltimaRiga, Ultimacolonna
PrimaRiga = Range("A2").Row
PrimaColonna = Range("A2").Column
UltimaRiga = Range("A2").End(xlDown).Row
Ultimacolonna = Range("A1").End(xlToRight).Column
Range(Cells(PrimaRiga, 2), Cells(PrimaRiga, 2).End(xlDown)).Select
Range(Cells(PrimaRiga, PrimaColonna), Cells(UltimaRiga, Ultimacolonna)).Select
End Sub
Il metodo Range("A1")
Questa volta vedremo come trovare ed utilizzare un altro metodo: la Proprietà Address.
Per quel che ci interessa in questa esercitazione, tale Proprietà va usata con questa sintassi:
espressione.Address(rowabsolute:=False, columnabsolute:=False)
Nella tabella che segue vedremo quali sono le varie sintassi che possiamo usare. Gli argomenti racchiusi tra le parentesi dopo la parola chiave Address sono opzionali e, se omessi, equivalgono a TRUE, come si evince dagli ultimi due esempi qui di seguito trascritti:
| L'ESPRESSIONE | RESTITUISCE |
|---|---|
| Coord = Range("A1").Address(rowabsolute:=False, columnabsolute:=False) | A1 |
| Coord = Range("A1").Address(rowabsolute:=False) | $A1 |
| Coord = Range("A1").Address(columnabsolute:=False) | A$1 |
| Coord = Range("A1").Address(rowabsolute:=True, columnabsolute:=True) | $A$1 |
| Coord = Range("A1").Address | $A$1 |
Come si può notare dalle varie sintassi usate, gli argomenti rowabsolute e columnabsolute possono essere impostate a False o True restituendo un riferimento alla cella come relativo, assoluto o misto (presenza o meno del simbolo "$" prima del riferimento di riga e/o colonna).
Questo è un esempio di utilizzo di tali coordinate:
Sub prova()
Dim Coord As String, CellaPart As String, CellaArr As String
Dim CL As Range
' Cerco gli indirizzi delle celle sotto indicate
Coord = Range("A2").Address' trovo la coordinata nella forma $A$2
CellaPart = Range("A1").Address(False, False) ' trovo la coordinata nella forma A1 F10
CellaArr = Range("F10").Address(False, False)
For Each CL In Range(CellaPart & ":" & CellaArr)
CL = Int(Rnd() * 100) ' scrivo dei numeri casuali nell'intervallo "A1:F10"
Next
Range(Coord).Offset(0, 1).EntireColumn.Delete ' elimino la seconda colonna
Range(CellaPart & ":" & CellaArr).Select ' seleziono l'intervallo "A1:F10"
End Sub