Copiar celda en un rango especifico

Tengo un formulario que selecciona una un rango de una hoja, y trae los datos para poder modificarlos, una vez modificados en el formulario, copia unas fórmulas en la hoja y dichos datos los traslada a de unas celdas a otras, el problema es que alguna instrucción está mal y no me permite copiar los datos que tengo en unos renglones de la celda a otros. La macro es la siguiente:

Option Explicit

Dim rango As Range

Private Sub CommandButton3_Click()

'Buscar

'si el combobox está vacio, te informa

If ComboBox2 = "" Then

MsgBox "selecciona algún dato para buscar", vbOKOnly + vbInformation, "AVISO"

ComboBox2.SetFocus

Exit Sub

End If

'Busca el código seleccionado en la columna A

Set rango = Range("A58:A67").Find(WHAT:=ComboBox2, _

LOOKAT:=xlWhole, LookIn:=xlValues)

'Si el dato ingresado no se encuentra en el rango, te informa

If rango Is Nothing Then

MsgBox "El dato no fue encontrado", vbOKOnly + vbInformation, "AVISO"

ComboBox2 = "": ComboBox1.SetFocus

Exit Sub

'si lo encuentra, llama los campos que se encuentran en la fila

Else

TextBox1 = Range("B" & rango.Row)

TextBox2 = Range("C" & rango.Row)

ComboBox1 = Range("D" & rango.Row)

End If

End Sub

Private Sub CommandButton4_Click()

'EDITAR

If rango Is Nothing Then

MsgBox "Aun no buscas ningun dato", vbOKOnly + vbInformation, "AVISO"

ComboBox2.SetFocus

End If

'si algún dato está en blanco, te avisa

If ComboBox2 = "" Or TextBox1 = "" Or ComboBox1 = "" Then

MsgBox "No dejes ningun campo obligatorio en blanco", vbOKOnly + vbInformation, "AVISO"

Exit Sub

End If

'aquí quiero que si el dato seleccionado en el combobox1 no comienza por los números 1110 u 1120 entonces informe y no permita continuar.

'cadena = Left(ComboBox1, 4)

'    If cadena <> "1110" Or cadena <> "1120" Then

' MsgBox "Debe seleccionar una que corresponda a una entidad bancaria", vbCritical, "aviso"

'    Exit Sub

'    End If

'si está correcto, ingresa los datos en la fila

ActiveSheet.Unprotect "XXX"

Range("B" & rango.Row) = TextBox1

Range("C" & rango.Row) = TextBox2

Range("D" & rango.Row) = ComboBox1

'ActiveSheet.Protect "XXX"

'escribo formulas en celdas de cuentas

Sheets("CONFIGURACION").Range("M2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[5])"

    Range("N2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[5])"

    Range("O2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[5])"

'escribo la cuenta en la celda M1

Range("M1") = ComboBox1

'escribo las formulas de la fila 1

    Range("O1").FormulaR1C1 = "=+MID(RC[-2],1,1)"

    Range("P1").FormulaR1C1 = "=+MID(RC[-3],1,2)"

    Range("Q1").FormulaR1C1 = "=+MID(RC[-4],1,4)"

    Range("R1").FormulaR1C1 = "=+MID(RC[-5],1,6)"

    Range("S1").FormulaR1C1 = "=+VLOOKUP(RC[-4],'PLAN CTAS'!R6C1:R3000C2,2,0)"

    Range("T1").FormulaR1C1 = "=+VLOOKUP(RC[-4],'PLAN CTAS'!R6C1:R3000C2,2,0)"

    Range("U1").FormulaR1C1 = "=+VLOOKUP(RC[-4],'PLAN CTAS'!R6C1:R3000C2,2,0)"

    Range("V1").FormulaR1C1 = "=+VLOOKUP(RC[-4],'PLAN CTAS'!R6C1:R3000C2,2,0)"

'escribo formulas de la fila 2

Sheets("CONFIGURACION").Range("M2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[6])"

    Range("N2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[6])"

    Range("O2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[6])"

    Range("P2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[6])"

'paso el dato de M2 a columna c

'aquí quiero que se pasen los datos de unas celdas a otras, pero en el mismo renglón del rango

'Sheets("CONFIGURACION").Range("I" & rango.Row) = Range("M2")       'clase

'Sheets("CONFIGURACION").Range("J" & rango.Row) = Range("N2")       'grupo

'Sheets("CONFIGURACION").Range("K" & rango.Row) = Range("O2")       'cuenta

'Sheets("CONFIGURACION").Range("L" & rango.Row) = Range("P2")       'cuenta2

'Sheets("CONFIGURACION").Range("M" & rango.Row) = Range("M1")        'subcuenta

ActiveSheet. Protect ("XXX")

Unload Me

End Sub

Si alguien me puede ayudar a corregir las instrucciones le agradezco de antemano.

1 Respuesta

Respuesta
1

H o l a:

Te anexo la macro actualizada, solamente me queda la duda si la hoja donde editas los datos y la hoja de "configuración" son la misma hoja.

Cambié tu variable "rango" por la variable "b", me gusta trabajar más con la variable "b".

Quité la instrucción "Option Explicit"

También arreglé la parte de la cadena.

Private Sub CommandButton3_Click()
'Buscar
    'si el combobox está vacio, te informa
    If ComboBox2 = "" Then
        MsgBox "selecciona algún dato para buscar", vbOKOnly + vbInformation, "AVISO"
        ComboBox2.SetFocus
        Exit Sub
    End If
    'Busca el código seleccionado en la columna A
    Set b = Range("A58:A67").Find(ComboBox2, LookAt:=xlWhole, LookIn:=xlValues)
    If b Is Nothing Then
        'Si el dato ingresado no se encuentra en el rango, te informa
        MsgBox "El dato no fue encontrado", vbOKOnly + vbInformation, "AVISO"
        ComboBox2 = "": ComboBox1.SetFocus
        Exit Sub
    End If
    '
    TextBox1 = Range("B" & b.Row)
    TextBox2 = Range("C" & b.Row)
    ComboBox1 = Range("D" & b.Row)
End Sub
'
Private Sub CommandButton4_Click()
'EDITAR
'Act.Por.Dante Amor
    If ComboBox2 = "" Then
        MsgBox "selecciona algún dato para buscar", vbOKOnly + vbInformation, "AVISO"
        ComboBox2.SetFocus
        Exit Sub
    End If
    'Busca el código seleccionado en la columna A
    Set b = Range("A58:A67").Find(ComboBox2, LookAt:=xlWhole, LookIn:=xlValues)
    If b Is Nothing Then
        'Si el dato ingresado no se encuentra en el rango, te informa
        MsgBox "El dato no fue encontrado", vbOKOnly + vbInformation, "AVISO"
        ComboBox2.SetFocus
        Exit Sub
    End If
    'si algún dato está en blanco, te avisa
    If ComboBox2 = "" Or TextBox1 = "" Or ComboBox1 = "" Then
        MsgBox "No dejes ningun campo obligatorio en blanco", vbOKOnly + vbInformation, "AVISO"
        Exit Sub
    End If
    'aquí quiero que si el dato seleccionado en el combobox1 no comienza por los números 1110 u 1120 entonces informe y no permita continuar.
    cadena = Left(ComboBox1, 4)
    If cadena <> "1110" And cadena <> "1120" Then
        MsgBox "Debe seleccionar una que corresponda a una entidad bancaria", vbCritical, "aviso"
        ComboBox1.SetFocus
        Exit Sub
    End If
    'si está correcto, ingresa los datos en la fila
        ActiveSheet.Unprotect "XXX"
        Range("B" & b.Row) = TextBox1
        Range("C" & b.Row) = TextBox2
        Range("D" & b.Row) = ComboBox1
    'escribo formulas en celdas de cuentas
        Sheets("CONFIGURACION").Range("M2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[5])"
        Range("N2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[5])"
        Range("O2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[5])"
    'escribo la cuenta en la celda M1
        Range("M1") = ComboBox1
    'escribo las formulas de la fila 1
        Range("O1").FormulaR1C1 = "=+MID(RC[-2],1,1)"
        Range("P1").FormulaR1C1 = "=+MID(RC[-3],1,2)"
        Range("Q1").FormulaR1C1 = "=+MID(RC[-4],1,4)"
        Range("R1").FormulaR1C1 = "=+MID(RC[-5],1,6)"
        Range("S1").FormulaR1C1 = "=+VLOOKUP(RC[-4],'PLAN CTAS'!R6C1:R3000C2,2,0)"
        Range("T1").FormulaR1C1 = "=+VLOOKUP(RC[-4],'PLAN CTAS'!R6C1:R3000C2,2,0)"
        Range("U1").FormulaR1C1 = "=+VLOOKUP(RC[-4],'PLAN CTAS'!R6C1:R3000C2,2,0)"
        Range("V1").FormulaR1C1 = "=+VLOOKUP(RC[-4],'PLAN CTAS'!R6C1:R3000C2,2,0)"
    'escribo formulas de la fila 2
        Sheets("CONFIGURACION").Range("M2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[6])"
        Range("N2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[6])"
        Range("O2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[6])"
        Range("P2").FormulaR1C1 = "=+CONCATENATE(R[-1]C[2],"" "",R[-1]C[6])"
    'paso el dato de M2 a columna c
    'aquí quiero que se pasen los datos de unas celdas a otras, pero en el mismo renglón del rango
        Sheets("CONFIGURACION").Range("I" & b.Row) = Range("M2")       'clase
        Sheets("CONFIGURACION").Range("J" & b.Row) = Range("N2")       'grupo
        Sheets("CONFIGURACION").Range("K" & b.Row) = Range("O2")       'cuenta
        Sheets("CONFIGURACION").Range("L" & b.Row) = Range("P2")       'cuenta2
        Sheets("CONFIGURACION").Range("M" & b.Row) = Range("M1")       'subcuenta
    '
    ActiveSheet.Protect ("XXX")
    Unload Me
End Sub

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas