Botón de comando ejecute una macro

Tengo un macro que se copia al consultar una celda pero quiero que al darle clic al botón de comando se ejecute la macro ya que nada más copia la primer celda la macro copia de una columna a una fila esta es la macro por favor
Private Sub CommandButton1_Click()
    Dim w As Worksheet
    Set w = Sheets("HOJA1")
    If w.Range("C3").End(xlDown).Row = 65536 Then
        w.Range("C4") = Range("p4")
    Else
        w.Range("C" & LTrim(Str(w.Range("C3").End(xlDown).Row) + 1)) = Range("P4")
    End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$P$4" Then
            Dim w As Worksheet
        Set w = Sheets("HOJA1")
        x = w.Range("C3").End(xlDown).Row
        If x = 65536 Then
            w.Range("C4") = Range("P4")
            w.Range("D4") = Range("P5")
            w.Range("E4") = Range("P6")
            w.Range("F4") = Range("P7")
            w.Range("G4") = Range("P8")
            w.Range("H4") = Range("P9")
            w.Range("I4") = Range("P10")
            w.Range("J4") = Range("P11")
            w.Range("K4") = Range("P12")
            w.Range("L4") = Range("P13")
            w.Range("M4") = Date
        Else
            w.Range("C" & LTrim(Str(x + 1))) = Range("P4")
            w.Range("D" & LTrim(Str(x + 1))) = Range("P5")
            w.Range("E" & LTrim(Str(x + 1))) = Range("P6")
            w.Range("F" & LTrim(Str(x + 1))) = Range("P7")
            w.Range("G" & LTrim(Str(x + 1))) = Range("P8")
            w.Range("H" & LTrim(Str(x + 1))) = Range("P9")
            w.Range("I" & LTrim(Str(x + 1))) = Range("P10")
            w.Range("J" & LTrim(Str(x + 1))) = Range("P11")
            w.Range("K" & LTrim(Str(x + 1))) = Range("P12")
            w.Range("L" & LTrim(Str(x + 1))) = Range("P13")
            w.Range("M" & LTrim(Str(x + 1))) = Date
        End If
    End If
End Sub
De antemano gracias dios los bendiga hoy y siempre

1 respuesta

Respuesta
1
Disculpa por la demora en responder, pero he estado con poco tiempo y la verdad que al mirra la macro me da la impresión que falta una instrucción como el while que hace el proceso hasta que cumpla una condición.
Por ejemplo:
While ActiveCell.Value<>Empty
"Todo la macro debería estar acá
Wend
Pruébalas y me comentas como te va. Disculpa por no disponer con más tiempo por ahora.
Suerte
No no me hizo lo que quiero
Lo que quiero que haga la macro es que me copie un rango de celda ya definido y que me lo pegue en una fila y que cuaundo le de click al botón de comando me ponga el mismo rango de celda en la fila siguiente
Gracias por tu interés
Cristo te ama recibelo en tu corazón
Enviame tu correo y te envío un ejemplo, ya que entiendo lo que necesitas es transponer los datos.
Mi correo es [email protected]
Gracias
Dios te bendiga
Te acabo de enviar un correo con la forma de transponer los datos, si es que es lo que necesitas. En fin espero que puedas solucionar tu problema
No dudes en consultar, estoy para ayudarte
Ok vi el archivo pero aclarame un poco más lo que necesitas, ya que veo que al ingresar un numero en la celda P4 se agrega una fila con datos, pero cual es la idea de presionar el botón que debería pasar.
Explicamente eso y te envío el código lo antes que pueda.
Gracias por tu esfuerzo
Lo que quiero que haga es no tener que poner un numero en la celda p4 porque me borra el vinvulo de la celda que esta en otro libro
Entonces por o que entiendo es que cuando tu presiones el botón de comando debería hacer lo mismo que hace cuando ingresas un numero en P4
Aclarame si es eso lo que necesitas.
Si eso es lo que necesito que al dar click sobre el botón de comando este haga lo de la celda p4
Lo que deberías hacer es usar el mismo código que esta dentro del:
 Private Sub Worksheet_Change(ByVal Target As Range) y solo eliminar el If que hace referencia a la celda P4
o sea deberia ser algo asi:
Private Sub CommandButton1_Click()
        Dim w As Worksheet
        Set w = Sheets("HOJA1")
        x = w.Range("C3").End(xlDown).Row
        If x = 65536 Then
            w.Range("C4") = Range("P4")
            w.Range("D4") = Range("P5")
            w.Range("E4") = Range("P6")
            w.Range("F4") = Range("P7")
            w.Range("G4") = Range("P8")
            w.Range("H4") = Range("P9")
            w.Range("I4") = Range("P10")
            w.Range("J4") = Range("P11")
            w.Range("K4") = Range("P12")
            w.Range("L4") = Range("P13")
            w.Range("M4") = Date
        Else
            w.Range("C" & LTrim(Str(x + 1))) = Range("P4")
            w.Range("D" & LTrim(Str(x + 1))) = Range("P5")
            w.Range("E" & LTrim(Str(x + 1))) = Range("P6")
            w.Range("F" & LTrim(Str(x + 1))) = Range("P7")
            w.Range("G" & LTrim(Str(x + 1))) = Range("P8")
            w.Range("H" & LTrim(Str(x + 1))) = Range("P9")
            w.Range("I" & LTrim(Str(x + 1))) = Range("P10")
            w.Range("J" & LTrim(Str(x + 1))) = Range("P11")
            w.Range("K" & LTrim(Str(x + 1))) = Range("P12")
            w.Range("L" & LTrim(Str(x + 1))) = Range("P13")
            w.Range("M" & LTrim(Str(x + 1))) = Date
        End If
End Sub
Pruébalo y me comentas como te va
Ok quedo excelente gracias por tu esfuerzo y disculpame por mi insistencia
Sabes mucho de esto gracias
Dios te bendiga hoy y siempre sigue así
Recuerda dios te ama

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas