Compartir a través de


Hacer referencia a los rangos con nombre

Es más sencillo identificar los rangos por nombre que por la notación A1. Para asignar un nombre a un rango seleccionado, haga clic en el cuadro de nombre situado a la izquierda de la barra de fórmulas, escriba un nombre y, a continuación, presione la tecla ENTRAR.

Nota Hay dos tipos de rangos con nombre: Rango con nombre del libro y Intervalo con nombre específico de WorkSHEET.

Rango con nombre del libro

Un rango con nombre del libro hace referencia a un rango determinado de cualquier parte del libro (se aplica globalmente).

Cómo crear un rango con nombre del libro:

Como se ha explicado anteriormente, normalmente se creará escribiendo el nombre en el cuadro de nombre en el extremo izquierdo de la barra de fórmulas. Tenga en cuenta que no se permiten espacios en el nombre.

Rango con nombre específico de hoja de cálculo

Un rango con nombre de hoja de cálculo específica hace referencia a un rango de una hoja de cálculo específica y no es global para todas las hojas de cálculo en un libro. Consulte este rango con nombre solo por el nombre de la misma hoja de cálculo, pero desde otra hoja de cálculo debe usar el nombre de la hoja de cálculo incluyendo "!" el nombre del rango (ejemplo: el rango "Name" "=Sheet1! Nombre").

La ventaja es que puede usar código de VBA para generar hojas nuevas con los mismos nombres para los mismos intervalos en esas hojas sin recibir un error que indica que el nombre ya existe.

Cómo crear un rango con nombre de hoja de cálculo específica:

  1. Seleccione el rango que al que quiere dar nombre.
  2. Haga clic en la pestaña "Fórmulas" de la cinta de opciones de Excel en la parte superior de la ventana.
  3. Haga clic en el botón "Definir nombre" en la pestaña Fórmula.
  4. En el cuadro de diálogo "Nombre nuevo", en el campo "Ámbito", elija la hoja de cálculo concreta en la que se encuentra el rango que desea definir (por ejemplo, "Hoja1"), esto hace que el nombre sea específico para esta hoja de cálculo. Si elige "Libro", será un nombre de libro).

Ejemplo de intervalo con nombre específico de WorkSHEET: el intervalo seleccionado al que se va a asignar el nombre es A1:A10

El nombre seleccionado del intervalo es "nombre". Desde la misma hoja de cálculo, se hace referencia al nombre denominado solo escribiendo en una celda "=nombre". Desde otra hoja de cálculo, se hace referencia al rango de la hoja de cálculo específica incluyendo el nombre de la hoja de cálculo en una celda "= Hoja1!nombre".

Hacer referencia a un rango con nombre

El siguiente ejemplo hace referencia al rango denominado "MyRange" en el libro "MyBook.xls".

Sub FormatRange() 
    Range("MyBook.xls!MyRange").Font.Italic = True 
End Sub

El siguiente ejemplo hace referencia al rango de hojas de cálculo específico denominado "Sheet1!Sales" en el libro "MyBook.xls".

Sub FormatSales() 
    Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthin 
End Sub

Para seleccionar un rango con nombre utilice el método GoTo, que activa el libro y la hoja de cálculo y, a continuación, selecciona el rango.

Sub ClearRange() 
    Application.Goto Reference:="MyBook.xls!MyRange" 
    Selection.ClearContents 
End Sub

El siguiente ejemplo muestra cómo se escribiría el mismo procedimiento para el libro activo.

Sub ClearRange() 
    Application.Goto Reference:="MyRange" 
    Selection.ClearContents 
End Sub

Código de ejemplo proporcionado por: Dennis Wallentin, VSTO & .NET & Excel

En este ejemplo se usa un rango con nombre como la fórmula de validación de datos. En este ejemplo se requiere que la validación de datos sea en la Hoja 2 en el rango A2:A100. Esta validación de datos se usa para validar los datos introducidos en la Hoja 1 en el rango D2:D10.

Sub Add_Data_Validation_From_Other_Worksheet()
'The current Excel workbook and worksheet, a range to define the data to be validated, and the target range
'to place the data in.
Dim wbBook As Workbook
Dim wsTarget As Worksheet
Dim wsSource As Worksheet
Dim rnTarget As Range
Dim rnSource As Range

'Initialize the Excel objects and delete any artifacts from the last time the macro was run.
Set wbBook = ThisWorkbook
With wbBook
    Set wsSource = .Worksheets("Sheet2")
    Set wsTarget = .Worksheets("Sheet1")
    On Error Resume Next
    .Names("Source").Delete
    On Error GoTo 0
End With

'On the source worksheet, create a range in column A of up to 98 cells long, and name it "Source".
With wsSource
    .Range(.Range("A2"), .Range("A100").End(xlUp)).Name = "Source"
End With

'On the target worksheet, create a range 8 cells long in column D.
Set rnTarget = wsTarget.Range("D2:D10")

'Clear out any artifacts from previous macro runs, then set up the target range with the validation data.
With rnTarget
    .ClearContents
    With .Validation
        .Delete
        .Add Type:=xlValidateList, _
             AlertStyle:=xlValidAlertStop, _
             Formula1:="=Source"
        
'Set up the Error dialog with the appropriate title and message
        .ErrorTitle = "Value Error"
        .ErrorMessage = "You can only choose from the list."
    End With
End With

End Sub

Ejecutar un bucle en las celdas de un rango con nombre

El siguiente ejemplo ejecuta un bucle en cada una de las celdas de un rango con nombre usando un bucle For Each...Next. Si el valor de cualquiera de las celdas del rango supera el valor de Limit, el color de la celda cambia a amarillo.

Sub ApplyColor() 
    Const Limit As Integer = 25 
    For Each c In Range("MyRange") 
        If c.Value > Limit Then 
            c.Interior.ColorIndex = 27 
        End If 
    Next c 
End Sub

Acerca del colaborador

Dennis Wallentin es el autor de VSTO & .NET & Excel, un blog que se centra en soluciones de .NET Framework para Excel y Excel Services. Dennis lleva más de veinte años desarrollando soluciones de Excel y es, además, coautor de "Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA and .NET (2nd Edition)".

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.