Patrón de codificación VBA: rango con nombre

Incluso si la dirección de referencia de Range se cambia durante la codificación de VBA, si usa Named Range (rango con nombre), puede evitar que el código fuente cambie independientemente del cambio de dirección de referencia. Veamos lo siguiente.

1. Referencia de rango usando dirección absoluta

Entre los muchos métodos para hacer referencia a Range en Excel VBA, el método más utilizado es el siguiente.

Dim sVal As String
sVal = Range("B2").Value2
Debug.Print sVal

En Rango ("B2"), "B2" representa la dirección absoluta de la celda en la hoja de Excel. Al agregar una fila o columna cambiando la forma de una hoja, "B2" debe cambiarse a "B3" o "C2". Si la dirección absoluta de la celda está solo en un lugar en el código VBA, se puede cambiar fácilmente.

Si el cambio en el rango al que se hará referencia no afecta los cambios en el código VBA, asigne un nombre al rango para que el código VBA se refiera al nombre en lugar de a la dirección absoluta de la celda, y si la ubicación a la que se hace referencia cambia, el nombre Puede cambiar la dirección de la celda especificada en .

2. Hacer referencia a un rango por nombre

2.1. Crear un rango con nombre

Primero, cree un nombre para el rango ejecutando el siguiente proceso. Fórmulas > Administrador de nombres > Nuevo… correr (Ver la siguiente figura)

그림1. 이름 생성
Figura 1. crear nombre

En la ventana "Nuevo nombre", establezca el nombre, el rango, la descripción y el objetivo de referencia.

그림2. 이름 설정
Figura 2. escoger un nombre

Aquí, "alcance" significa el alcance para referirse al nombre, y puede elegir uno de los dos.

  • Hoja (p. ej., Hoja1): solo se puede hacer referencia a él por su nombre en el código VBA escrito en esa hoja
  • Libro de trabajo: se puede hacer referencia a la hoja completa, el módulo, la clase, etc. por nombre

Como referencia, los nombres definidos en la hoja se copian juntos al copiar la hoja. En este momento, si necesita hacer referencia al mismo nombre en varias hojas, configúrelo en "Hoja", y si no necesita hacer referencia al mismo nombre, configúrelo en "Libro de trabajo". Cuando crea un nombre, puede verificar el resultado de la siguiente manera.

그림3. 이름 생성 결과
Figura 3. resultado de creación de nombre

Si selecciona la celda donde se define el nombre, el nombre se muestra en el cuadro de nombre.

그림4. 이름이 부여된 범위 선택시 해당 이름 표시
Figura 4. Mostrar el nombre al seleccionar un rango con nombre

Si selecciona una celda cuyo nombre no está definido, la dirección absoluta de la celda se muestra en el cuadro de nombre.

그림5. 이름이 부여되지 않은 범위 선택시 범위 절대주소 표시
Figura 5. Al seleccionar un rango sin nombre, se muestra la dirección absoluta del rango.

2.2. Escriba el código de referencia del nombre

Después de definir el nombre, escriba el código VBA que hace referencia al nombre definido. Un ejemplo sencillo es:

Dim sVal As String
sVal = Range("BaseRange").Value2
Debug.Print sVal

2.3. Ventajas de usar nombres

Si se cambia la dirección absoluta, se puede cambiar la dirección absoluta a la que hace referencia el nombre correspondiente. Es conveniente porque no hay necesidad de buscar y cambiar todo el código fuente de VBA.

Cuando se agrega o elimina una columna o fila, la dirección absoluta a la que hace referencia el nombre cambia automáticamente. Por ejemplo, si hay un nombre que se refiere a la celda "B2", agregar una fila entre las filas 1 y 2 lo cambiará automáticamente a "B3".

Mejora la legibilidad al leer código VBA. Para averiguar qué significa "B2" en el código fuente, debe abrir y mirar la hoja, pero si usa nombres como "BaseRange", "TableListBase", "ColumnListBase" y "ValueListBase", puede entender el significado sin abrir la hoja. Esto lo hace mucho más simple

Información Adicional Utilice el Administrador de nombres de Excel (microsoft.com) puede encontrarse en


En lo anterior, vimos el método y las ventajas de usar un nombre para un rango. Espero que le ayude con la codificación de VBA, y si tiene alguna pregunta, deje un comentario.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol