Comando para copiar una celda al cambiar el valor de otra.

Tengo un archivo excel, el cual llevo consecutivos de folios, relaciones. Hasta ahora es muy manual( uso mucho los cursores, mouse) quisiera ir mejorando ya que es modificado a diario.

El punto es. Tengo un valor en C3 y otro en H6.

Quisiera que al cambiar el valor de C3 automáticamente me copie el valor que tenga H6, en un rango de columnas. Ejm  K1, L1,M1. Asi sucesivamente.

Respuesta
2

H o l a: Te anexo la macro para que la pongas en los eventos de tu hoja. Lo que hace es, cada que modificas la celda C3, pone el valor de H6 en la siguiente columna disponible de la fila, empezando en la columna K.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Address(False, False) = "C3" Then
        If Target.Count > 1 Or Target.Value = "" Then Exit Sub
        '
        uc = Cells(1, Columns.Count).End(xlToLeft).Column + 1
        If uc < Columns("K").Column Then uc = Columns("K").Column
        Cells(1, uc).Value = [H6]
    End If
End Sub

Nota: Si en la celda C3 tienes una fórmula, entonces habría que cambiar C3 por la celda o celdas que componen la fórmula, pero si la fórmula obtiene su valor de otra hoja, tal vez habría que cambiar el evento Change por Calculate; pero tendrías que decirme cómo cambias el valor de C3.


Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola sr dante, agradecido también con su respuesta. Disculpe no haber atendido a ella anteriormente.

Me es de gran utilidad, pero no si le aplico mal, porque estoy haciendo uso de ella y solo al seleccionar la celda c3 sin haber cambiado aun su valor se activa el cambio y copia el valor. ¿Qué podría hacer?

Gracias de antemano por su colaboración

Revisa que hayas copiado bien mi macro. La macro que yo te envié contiene el evento Worksheet_Change, es decir, se activa solamente cuando hay cambio.

Te anexo nuevamente la macro para que revises.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Address(False, False) = "C3" Then
        If Target.Count > 1 Or Target.Value = "" Then Exit Sub
        '
        uc = Cells(1, Columns.Count).End(xlToLeft).Column + 1
        If uc < Columns("K").Column Then uc = Columns("K").Column
        Cells(1, uc).Value = [H6]
    End If
End Sub

¡Gracias! 

me es de gran  utilidad, espero me sigan ayudando en muchas mas preguntas q formule. ya que me gustaría salir de muchas dudas y aprender un poco mas de estas herramientas.

1 respuesta más de otro experto

Respuesta
1

Algo así creo que serviría:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'tomamos la referencia de la celda que ha cambiado
vdir = Target.Address
'vamos a ver si ha cambiado la celda C3
If vdir = "$C$3" Then
    'si es así, entonces tomamos el valor de la celda H6
    vnew = Cells(6, "H").Value
    'y lo pegamos en el rango K1:M1
    Range("K1:M1").Value = vnew
Else
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas