¿cómo crear un rango con nombre usando vba?
Para crear un rango con nombre usando VBA, debe usar la propiedad «Nombres» con el método «Agregar». En el método agregar tiene argumentos para definir qué nombre desea darle al rango y especificar la dirección del rango (asegúrese de usar el signo de dólar con la dirección para congelar el rango).
Crear un rango de nombres usando VBA
- Defina el libro de trabajo en el que desea crear el rango con nombre.
- Utilice la propiedad de nombres y luego agregue un método adicional.
- Especifique el nombre en el argumento «Nombre».
- Consulte el rango utilizando el argumento «ReferTo».
En el ejemplo anterior, tiene el libro activo, luego, usando la propiedad «Nombres» con el método «Agregar», establece el nombre del rango y, al final, la dirección del rango que desea usar.
Como dije antes, en el rango de direcciones debes usar el signo $ para congelar la dirección. También puede usar ThisWorkbook para hacer referencia al libro de trabajo en el que está escribiendo el código o puede usar referencia a otro libro de trabajo usando el objeto de libro de trabajo.
VBA para crear un rango con nombre a partir de la selección
También puede utilizar la propiedad de selección para crear un rango con nombre a partir de la selección. Considere el siguiente código.
ActiveSheet.Names.Add Name:="myRangeName", RefersTo:=Selection
Y en el siguiente código tienes un cuadro de mensaje con el que puedes ingresar el nombre que deseas darle al rango nombrado.
Sub vba_named_range() Dim iName As String iName = InputBox("Enter Name for the Selection.") ActiveSheet.Names.Add Name:=iName, RefersTo:=Selection End Sub
Cambiar el tamaño de un rango con nombre usando VBA (rango con nombre dinámico)
Para cambiar el tamaño de un rango con nombre que ya está presente en la hoja de trabajo, debe usar la propiedad de cambio de tamaño y decirle a VBA cuántas filas y columnas desea expandir del rango actual. Considere el siguiente código que expande el rango denominado «myRange» que inicialmente tiene la celda A1 como rango pero cambia su tamaño a la columna M y la fila 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
He dividido esto en tres partes para que quede claro, ahora vayamos a ello.
- En la PRIMERA parte tienes variables declaradas para almacenar las filas y el número de columnas.
- En la SEGUNDA parte, utilizó el método «FIN» con el rango para obtener la última fila y columna y almacenarla para las variables.
- En la parte TRES, utilizó la propiedad Cambiar tamaño con el rango denominado «myRange». Y después de eso el número de fila y columna que tienes en las variables.
Cuando ejecuta este código, cambia el tamaño del rango anterior según los datos que tiene y lo convierte en un rango con nombre dinámico. Siempre que necesite actualizarlo, puede ejecutar el código y cambiar el tamaño del rango con nombre existente.