Macro Para referenciar celda (manteniendo su contenido) para que el código VBA detecte sus movimiento.

Quisiera saber si existe alguna forma de que un código VBA pueda variar en función de los movimiento de la celda (y su contenido). Por ejemplo:

El código ha referencia a la celda J7

Set rango = Range(Range("J7"), Range("J7").End(xlDown))

Sin embargo, si yo inserto una columna o fila, podría cambiar la ubicación y contenido de la celda J7 que yo asocié a mi MACRO.

No se si existe si alguna forma de que yo referencie la celda J7 y el código VBA busque las posibles ubicaciones de esta celda referenciada y se ejecute con su contenido. Por ejemplo:

celda J7=referencia1

Set rango = Range(Range("refencia1"), Range("referecia1").End(xlDown))

2 respuestas

Respuesta
1

Hol.a

Si como comentas varía el contenido de dicha celda y la ubicación, quizá, y si mal no te entendí, te serviría colocarle nombre a esa celda y en el código que usar hacer referencia a ese nombre: Range("Nombredelacelda").

Otra opción es que coloques la dirección del rango a través de una variable y le des el valor con un "InputBox" o a través de una celda. Por ejemplo si en "A1" colocas "J7" (sin las comillas), podrías usar algo así:

Dim MiCelda As String

MiCelda = Range("A1").Value

Range(MiCelda)

Comentas

Abraham Valencia

Estimado, muchas gracias por responder, no entiendo muy bien la primera opción y he intentado practicar con el siguiente código la segunda pero no me funciona.

Sub Macro()
Sheets("Hoja1").Select
Ref_Busca = Worksheets("Hoja2").Cells.Find(What:=Worksheets("Hoja1").Range("A1") _
, LookIn:=xlValues, MatchCase:=True).Address
If IsEmpty(Range("B2")) Then
Set Celda = Range("B2").End(xlDown)
Set rango = Range(Celda, Celda.End(xlDown))
Else
Set rango = Range(Range("B2"), Range("B2").End(xlDown))
End If
Worksheets("Hoja1").Range(rango.Address).Copy Destination:=Worksheets("Hoja2").Range(Ref_Busca).Cells(4, 1)
Range("A1").Select
End Sub

De acuerdo a tus explicaciones como quedaría esta macro u otra más simple que pueda servir como ejemplo.

La primera opción es muy simple, solo coloca el cursor sobre la celda que desees, vas a "Fórmulas" - (grupo) "Nombres definidos" - "Asignar nombre" y en el cuadro de diálogo que te sale en "Nombre" colocas lo que quieras tipo "MiRango" y listo, así insertes filas o columnas, y se "mueva" la celda, siempre tendrá ese nombre y la usas así: Range("MiRango") y listo.

Abraham Valencia

Respuesta
1

Puedes guardar el valor de la celda como una variable fija en excel con esta instrucción

range("j7").name="celda"

Sin importar cuantas filas o cuantos columnas insertes una vez que selecciones del menu el rango celda este te enviara a donde este ese valor

Lo puedes jacer sin macros desde el menu fórmula, asignar nombre a un rango, seleccionas la celd, le asignas un nombre y listo

QUE GENIAL y simple, muchas gracias por tu gran ayuda

De nada olvide mencionar que si quieres mandar llamar el valor desde una macro la instrucción es valor=[celda] o valor=range("celda")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas