Inicio > Microsoft Excel > tavopz > macro para copiar contenido celda con un click

macro para copiar contenido celda con un click

Experto:
Usuario:
Fecha: 23/04/2008
Valoración: (5,00 sobre 5) Categoría: Microsoft Excel
16/04/2008
adrian105, usuario preguntando en Microsoft Excel
Usuario
hola tovpz quisiera que me ayudaras con una macro para hacer lo siguiente.
en la hoja 2 tengo un listado de productos columna a esta el codigo y columna b el producto. Lo que quiero hacer es que cuando de click en el codigo de la hoja2 este pase por ejemplo a la celda a1 de la hoja 1.
lo he estado intentando y le puse hipervinculo a los codigos pero no se como hacer para que me pacen a la hoja1 celda1
gracias por tu ayuda
18/04/2008
adrian105, experto respondiendo en Microsoft Excel
Experto
Hola,
Puedes hacerlo mediante un código de VBA, este lo colocas en el evento Change del Worksheet.
 
Es decir, das clic derecho sobre el nombre de la hoja donde está el dato original, y sobre este menú seleccionas Ver Código, allí pegas lo que te estoy enviando.
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

     If Target.Address = "$A$1" Then
         Sheets("HojaNueva").Range("A1").Value = Target

     End If
End Sub

 
Te explico, lo que hace es lo siguiente. Cuando das clic sobre alguna celda de la hoja donde has pegado este código, se ejecuta el evento SelectionChange, si la dirección de la celda que se seleccionó es igual a A1, entonces el valor de esa celda se pasará al Rango A1, de la hoja llamada HojaNueva.
 
La idea entonces es que reemplaces el nombre de la hoja y el rango de acuerdo con tu necesidad y pruebes para ver si te funciona.
 
Saludos, Tavopz
19/04/2008
adrian105, usuario preguntando en Microsoft Excel
Usuario
Tavopz, me funciona bien pero para una sola celda, y no hallo la forma de adaptarlo para que me copia los datos de un listado, como lo haria por ejemplo si el rango de los codigos es a1:a10.  Y lo otro seria si funciona si le pongo un nombre a este rango, de nuevo mil gracias,
22/04/2008
adrian105, experto respondiendo en Microsoft Excel
Experto
Hola,
Podría ser algo así:
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim c As Range
    i = 1
    If Target.Count > 1 Then
         For Each c In Target
             Sheets("Sheet2").Range("A" & LTrim(Str(i))).Value = c.Value
             i = i + 1
         Next c
     Else
         Sheets("Sheet2").Range("A1").Value = Target
     End If
End Sub

 
Sin embargo, deberías tener mucho cuidado con el uso de tu hoja, porque cada que selecciones un rango esta información seleccionada se movería a la otra hoja.
 
Saludos, Tavopz
23/04/2008
adrian105, usuario preguntando en Microsoft Excel
Usuario
ok. gracias por tu ayuda
Enlaces patrocinados