Excel - Copiar el contenido de la celda activa

Resuelto
Noibeu -  
 anonymike -
Hola,

soy principiante con Excel y después de algunos días de búsqueda (les aseguro, no a tiempo completo), he decidido exponerles mi problema...

Necesito mostrar el contenido de la celda activa en otra celda bien definida. Es decir, independientemente de dónde haga clic en mi hoja de Excel, el contenido de esta celda seleccionada debe aparecer en mi otra celda.

He intentado con la función CELDA("contenido";K12) pero solo me da el contenido de la celda K12.

En la función CELDA, ¿es posible reemplazar K12 por algo que haga referencia a la celda activa?

Si no, ¿hay alguna función que podría resolver mi problema?

Si no, imagino que es posible con una macro, pero no tengo conocimientos sobre eso, si es posible tener el código...

Gracias de antemano...

Noibeu
Configuración: Windows XP Internet Explorer 6.0

2 respuestas

  1. ptidavid Mensajes publicados 1322 Estado Miembro 108
     
    Aquí tienes una solución, paso a paso. En Excel:
    - haz clic en el menú Herramientas, luego en Macro y en la lista que aparece, en "Visual Basic Editor",
    - en el explorador de proyectos VBAProject a la izquierda de la pantalla, tienes tus diferentes hojas de tu libro de Excel. Tomemos por ejemplo la hoja titulada Hoja1 en Microsoft Excel Objects. Haz doble clic en "Hoja1 (Hoja1)"
    - se abre una página de código en blanco frente a ti. Justo en la parte superior de esta, tienes marcado en una lista desplegable "General". Haz clic en este último y elige "Worksheet". La lista desplegable de la derecha se ha actualizado: ábrela y elige "SelectionChange". SelectionChange es, de hecho, una macro que se ejecuta cada vez que cambias de celda activa en tu hoja de Excel. Solo tienes que integrar el código para copiar el contenido de la celda activa en cada nueva celda donde hagas clic.
    - en la nueva página, tienes el siguiente contenido:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    End Sub


    Private Sub etc. es el encabezado/el nombre/el inicio de tu macro y End Sub indica el final de la misma. Todo el contenido de tu macro debe escribirse entre este encabezado y el End Sub.

    - para llegar a la instrucción de copia de celdas, la celda activa se denomina ActiveCell en VBA Excel. El valor contenido en esta celda se llama ActiveCell.Value. Cualquier celda en Excel se escribe Cells(fila,columna), su valor siendo Cells(fila,columna).Value.
    Por lo tanto, si por ejemplo quieres copiar el contenido de la celda A1, B1 en una celda sobre la que Has hecho clic (y que se convierte en activa), aquí está la instrucción que debes insertar en el cuerpo de la macro:
    ActiveCell.Value = Cells(1, 1).Value

    Al final, tu macro será como sigue:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveCell.Value = Cells(1, 1).Value
    End Sub


    Luego guarda la macro y prueba escribiendo lo que quieras en la celda A1, B1, validando y luego haciendo clic en cualquier otro lugar de la hoja. Luego te dejo adaptar la celda que deseas copiar ;-)

    Esto es todo, espero haberte ayudado. Si no es exactamente lo que buscabas, no dudes en corregirme.
    12
    1. Noibeu
       
      ¡Muchas gracias Ptidavid,

      ¡funciona a la perfección! Solo había un pequeño problema, y era que con lo que me diste, el contenido de la celda A1 iba a la celda activa. Yo quería lo contrario (que el contenido de la celda activa fuera a A1).

      Pero como fuiste muy claro y preciso en tu explicación, no fue difícil entender que en lugar de ActiveCell.Value = Cells(1, 1).Value, había que poner Cells(1, 1).Value = ActiveCell.Value.

      ¡Gracias de nuevo por tomarte el tiempo de responderme y por la claridad de tus explicaciones!


      Noibeu
      0
    2. ptidavid Mensajes publicados 1322 Estado Miembro 108 > Noibeu
       
      De nada ;-) ¡No olvides marcar "Resuelto" en la parte superior de tu primer mensaje!
      0
    3. Helveticus
       
      Hay personas que saben explicar y que se toman el tiempo...Bravo y muchas gracias.
      0
    4. PourAprendre
       
      ParaAprender : Bravo a PtiDavid porque leyendo únicamente, todo queda perfectamente claro.
      Gracias y este don debe ser cultivado y duplicado.
      0
    5. touroul Mensajes publicados 520 Fecha de registro   Estado Miembro Última intervención   16
       
      Incluso años después, todavía sirve.
      ¡Gracias!
      1
  2. touroul Mensajes publicados 520 Fecha de registro   Estado Miembro Última intervención   16
     
    Hola comunidad.

    Perdón por desenterrar este tema un poco polvoriento que sigue siendo de actualidad.

    En el mismo sentido, necesitaría realizar una copia simple de la ActiveCell en el portapapeles (para poder pegarla en otro lugar).
    Además, necesitaría limitar esta función a las celdas B3:B20 en las hojas "Soudure" y "Collage".

    Aquí estoy:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If ("B3:B20")
    Then Range.ActiveCell.Value.Select
    Selection.Copy
    End Sub

    ¿Puedo pedirles un poco de ayuda?

    ¡Gracias de antemano!

    ------------Tema movido a nuevo post -------
    0