none
¿Cómo asigno un nombre a un rango mediante una macro? RRS feed

  • Pregunta

  • Hola comunidad de microsoft

    Deseo que me ayuden con algo que deseo hacer pero tengo problemas para efectuarlo de forma eficiente. Tengo una hoja en Excel con una enorme cantidad de información. A fin de poder gestionar esta información necesito dividir la tabla de datos en rangos especificos. He identificado 315 rangos, pero a como podran imaginar, no es posible agregar cada uno de estos rangos y asignarles un nombre uno a uno.

    Elaboré la siguiente instrucción VBA para poder nombrar estos rangos:

    Sub names()
    Dim R As Double
    Dim name, rango As String

    For R = 1 To 315

    ThisWorkbook.Activate
    Sheets("range names").Select
    Range("k3").Select
    ActiveCell.Offset(R, 0).Activate
    name = ActiveCell
    ActiveCell.Offset(0, 3).Activate
    rango = ActiveCell

    Sheets("GC").Select
        ThisWorkbook.names.Add name:=name, RefersTo:=rango
        ThisWorkbook.names(name).Comment = ""
       
    Next R
    End Sub

    En la hoja "range names" tengo una tabla que contiene los nombres de los 315 rangos y en una columna tengo escritos los rangos en formato de texto.

    Cuando corro la macro traslada toda la información pero cuando escribo un nombre para ver si me manda al rango, no pasa nada, lo que sucede es que se sobreescribe el nombre con el rango activo en ese momento, no el rango de la tabla que elaboré.

    Solicito de su ayuda para poder agregar de forma correcta estos nombres de rango.

    Saludos y gracias.

    martes, 21 de enero de 2014 16:13

Todas las respuestas

  • Hola

    ¿Probaste a usar el grabador de macros, a ver que código te genera?

    Salu2,


    José Mª Fueyo [MS MVP Access]

    miércoles, 22 de enero de 2014 8:29
  • Hola:

    "Cuando corro la macro traslada toda la información pero cuando escribo un nombre para ver si me manda al rango, no pasa nada, lo que sucede es que se sobreescribe el nombre con el rango activo en ese momento, no el rango de la tabla que elaboré."

    No tienes que escribir el nombre en el cuadro de nombres, en el desplegable te deberían salir tus nombres definidos, si no salen es que no están creados correctamente. Si escribes el nombre (y no existe), entonces lo estás creando a mano.

    Yo comprobaría tu macro, ejecutando paso a paso y comprobar si se crea el nombre:

    1) ¿Los rangos están correctamente definidos?, ejemplo [Hoja1]!$A1:$B22

    2) Cuando haces .Names.Add Name:=..., RefersTo:=rango

        creo que (no estoy seguro) que la cadena para RefersTo tiene que empezar por un igual.

    Prueba: .Names.Add Name:=..., RefersTo:="=" & rango

    Saludos

    miércoles, 22 de enero de 2014 10:15
  • "¿Probaste a usar el grabador de macros, a ver que código te genera?"

    Si lo hice, precisamente las instrucciones de las dos ultimas lineas son de una macro grabada, lo unico que hice fue ponerle las variables para que cambiaran con el bucle.


    miércoles, 22 de enero de 2014 16:21
  • Hola LG DES, gracias por tu respuesta.

    Pues, lastima que no pude subir una captura de pantalla, pero dentro de la ventana de administración de nombres me aparecen todos los nombres que necesitaba y las direcciones de los rangos como si todo se hubiese creado bien. El primer problema es que en el ambito no aparece el nombre de la hoja que especifiqué en la tabla sino "libro" y cuando escribo uno de los nombres en el textbox de nombres no aparecen ninguno de ellos. Es como que se grabaron pero no son reconocidos.

    Voy a chequear lo ultimo que me dices a ver que sucede.

    Saludos.

    miércoles, 22 de enero de 2014 16:25
  • LG DES

    Ya probé agregando "=" antes de la variable, pero ahora no me deja correr la macro, envia el error 1004 "error en la fórmula" cuando se la quito me deja pasar normal la macro, quizas sea porque el sistema le pone por "default" el signo "="

    miércoles, 22 de enero de 2014 17:12
  • Hola:

    Pues yo lo tengo con RefersTo:="=" & rango y me funciona.

    Quizás si pusieras un ejemplo de los nombres de rango y sus referencias que tienes podríamos ayudarte.

    Saludos

    EDITADO:

    Prueba de quitar esta línea:

    ThisWorkbook.names(name).Comment = ""

    Me parece que es la que da problemas!!!

    • Editado LG DES jueves, 23 de enero de 2014 8:59 Solución
    • Propuesto como respuesta LG DES jueves, 30 de enero de 2014 11:08
    jueves, 23 de enero de 2014 8:53