Come creare un intervallo denominato utilizzando vba?
Per creare un intervallo denominato utilizzando VBA, è necessario utilizzare ulteriormente la proprietà “Nomi” con il metodo “Aggiungi”. Nel metodo add hai argomenti per definire quale nome vuoi dare all’intervallo e specificare l’indirizzo dell’intervallo (assicurati di utilizzare il simbolo del dollaro con l’indirizzo per congelare l’intervallo).
Crea un intervallo di nomi utilizzando VBA
- Definire la cartella di lavoro in cui si desidera creare l’intervallo denominato.
- Utilizza la proprietà dei nomi, quindi aggiungi un metodo aggiuntivo.
- Specificare il nome nell’argomento “Nome”.
- Fare riferimento all’intervallo utilizzando l’argomento “ReferTo”.
Nell’esempio sopra, hai la cartella di lavoro attiva, quindi utilizzando la proprietà “Nomi” con il metodo “Aggiungi” imposti il nome dell’intervallo e, alla fine, l’indirizzo dell’intervallo che desideri utilizzare.
Come ho detto prima, nell’intervallo di indirizzi è necessario utilizzare il segno $ per congelare l’indirizzo. Puoi anche utilizzare ThisWorkbook per fare riferimento alla cartella di lavoro in cui stai scrivendo il codice oppure puoi utilizzare fare riferimento a un’altra cartella di lavoro utilizzando l’oggetto cartella di lavoro.
VBA per creare un intervallo denominato dalla selezione
È inoltre possibile utilizzare la proprietà di selezione per creare un intervallo denominato dalla selezione. Considera il seguente codice.
ActiveSheet.Names.Add Name:="myRangeName", RefersTo:=Selection
E nel codice seguente hai una finestra di messaggio con la quale puoi inserire il nome che vuoi dare all’intervallo denominato.
Sub vba_named_range() Dim iName As String iName = InputBox("Enter Name for the Selection.") ActiveSheet.Names.Add Name:=iName, RefersTo:=Selection End Sub
Ridimensionare un intervallo denominato utilizzando VBA (Dynamic Named Range)
Per ridimensionare un intervallo denominato già presente nel foglio di lavoro, è necessario utilizzare la proprietà di ridimensionamento e indicare a VBA quante righe e colonne si desidera espandere dall’intervallo corrente. Considera il codice seguente che espande l’intervallo denominato “myRange” che inizialmente ha la cella A1 come intervallo ma lo ridimensiona alla colonna M e alla riga 11.
Sub vba_named_range() Dim iRow As Long Dim iColumn As Long iRow = ActiveSheet.Range("A1").End(xlDown).Row iColumn = ActiveSheet.Range("A1").End(xlToRight).Column ActiveSheet.Range("myRange") _ .Resize(iRow, iColumn).Name = "myRange" End Sub
L’ho diviso in tre parti per chiarirti le idee, ora veniamo al sodo.
- Nella PRIMA parte hai delle variabili dichiarate per memorizzare le righe e il numero di colonne.
- Nella SECONDA parte, hai utilizzato il metodo “END” con l’intervallo per ottenere l’ultima riga e colonna e memorizzarla per le variabili.
- Nella Parte TRE hai utilizzato la proprietà Resize con l’intervallo denominato “myRange”. E dopo il numero di riga e colonna che hai nelle variabili.
Quando esegui questo codice, ridimensiona il vecchio intervallo in base ai dati che hai e lo rende un intervallo denominato dinamico. Ogni volta che è necessario aggiornarlo, puoi eseguire il codice e ridimensionare l’intervallo denominato esistente.