Excel - Definir un rango con macros

 
Vista:
sin imagen de perfil

Definir un rango con macros

Publicado por JONATHAN (89 intervenciones) el 02/07/2010 16:34:25
Saludos a todos en el foro

Molestando con una duda, tengo un còdigo que necesito usar, dentro del cual tengo que defiir un nombre de un rango, el problema es que cuando el rango varia, ya sea que tiene màs columnas o filas el nombre establecido en la macro no cambia:

Con la grabadora de macros el còdigo es este:

ActiveWorkbook.Names.Add Name:="john", RefersToR1C1:="=Hoja1!R1C1:R6C3"

Lo que no sé como hacer para modificar después de RefersToR1C1:= y que coloque el mismo nombre en el àrea que yo tenga seleccionada en ése momento, ya que el código que le antecede es :

Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select

¿Como debo modificar el código para que me defina un nombre de acuerdo a lo que yo tenga seleccionado previamente?

Sin màs por el momento doy las gracias de antemano por cualquier ayuda al respecto

Jonathan
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

RE:Definir un rango con macros

Publicado por JuanC (1237 intervenciones) el 02/07/2010 17:05:39
prueba usando

Selection.Address

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Definir un rango con macros

Publicado por JONATHAN (89 intervenciones) el 02/07/2010 17:16:26
Escribí

ActiveWorkbook.Names.Add Name:="john", RefersToR1C1:=Selection.Address

Pero no hace nada, al verificar el código solo me pone el rango pero no me especifica cual hoja, intenté agregar activeSheet pero me marca error
¿Qué me recomoiendas?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:Definir un rango con macros

Publicado por JuanC (1237 intervenciones) el 02/07/2010 17:28:59
prueba modificando los argumentos de Address (ver la Ayuda)

RefersToR1C1:=Selection.Address(, , xlR1C1)

no sé qué pretendes que haga el código, sólo agrega un nombre...

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Definir un rango con macros

Publicado por JONATHAN (89 intervenciones) el 02/07/2010 19:11:28
Gracias por contestar
he seguido tu consejo y resolví el problema, lo que yo necesitaba era que, sin importar si ya existía un nombre, al rango que yo tuviera seleccionado al ejecutar la macro, le asignara un nombre específico (region).

el código resultó así:

ActiveWorkbook.Names.Add Name:="Region", RefersToR1C1:="=Hoja1!" & Selection.Address(ReferenceStyle:=xlR1C1)

Realmente no supe como cambiarle Hoja1 por ActiveSheet.name o algo por el estilo pero por el momento funciona si puedes mejorarla.

Saludos y gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

RE:Definir un rango con macros

Publicado por Abraham Valencia (2415 intervenciones) el 03/07/2010 01:05:32
Quizas asi:

ActiveWorkbook.Names.Add Name:="Region", RefersTo:=Worksheets(ActiveSheet.Name).Range(Selection.Address)

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Definir un rango con macros

Publicado por JONATHAN (89 intervenciones) el 03/07/2010 14:38:08
Muchas Gracias, ya viendolo se ve lógico, pero simplemente no me salìa
Saludos desde México
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Definir un rango con macros

Publicado por Hugo Serrano (1 intervención) el 15/11/2012 16:24:26
Saludos.

Genial su hilo de conversación, me ha servido mucho, gracias a los dos.

En mi caso, se trataba de generar un nombre de rango para una lista variable de alumnos por grupo y usar ese nombre de rango en una persiana desplegable para consulta individual, así que si la lista era de 19, o la lista cambiaba a 25 alumnos, el rango se pudiera modificar a ese tamaño, a mi me quedó el código de la siguiente manera:

Application.Goto Reference:="Fantasma"
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Names.Add Name:="Consulta", RefersTo:=Worksheets(ActiveSheet.Name).Range(Selection.Address)

De nuevo saludos desde México D.F.

Hugo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Definir un rango con macros

Publicado por jaime castiblanco (1 intervención) el 05/02/2014 18:11:11
que pena tengo esta macro el cual me valida si me hace falta por llenar un campo, no se como hacer para que esas tres celdas sean de las filas que se escoja para que me haga la validación es decir de a2:c200 pero que me cambie al seleccionar los campos

esta se pega en el modulo
Sub Bt()
If Range("D2") <> "" And Range("E2") <> "" And Range("F2") <> "" Then
ActiveWorkbook.Names.Add Name:="NOMBRES", RefersTo:=Worksheets(ActiveSheet.Name).Range(Selection.Address)
ActiveWorkbook.Save 'SERIA ALGO ASÍ
Else
MsgBox ("Una de las celdas D2, E2 y F2 está(n) vacia(s), favor revise y rellene" & vbCrLf & vbCrLf & "Antes no podrá cerrar el libro"), , "vbInformation" + "ERROR DE CIERRE"
End If
End Sub

y esta en ThisWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Range("D2") = "" Or Range("E2") = "" Or Range("F2") = "" Then
MsgBox ("Una de las celdas D2, E2 y F2 está(n) vacia(s), favor revise y rellene" & vbCrLf & vbCrLf & "Antes no podrá cerrar el libro"), , "vbInformation" + "ERROR DE CIERRE"
Cancel = True
End If
End Sub

si me pueden ayudar muchísimas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar