EXCEL Y VBA se puede programar a que columna se va la información con un formulario

Si tengo una hoja de Excel de la siguiente manera

 

lo que necesito es que a través de un formulario de la siguiente manera

una vez que capture la información

se vaya a mi hoja de Excel de la siguiente manera

¿Alguien sabe como se programa esto?

1 Respuesta

Respuesta
2

En la columna "Cliente", tienes varios clientes, ¿entonces el monto se debe poner según el cliente y la empresa?

Si es así, primero, cambia tus textbox a combobox; utiliza la siguiente macro.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h = Sheets("Hoja4") 'pon el nombre de tu hoja
    If ComboBox1 = "" Then
        MsgBox "Seleciona un cliente"
        Exit Sub
    End If
    If ComboBox2 = "" Then
        MsgBox "Seleciona una empresa"
        Exit Sub
    End If
    If TextBox1 = "" Or Not IsNumeric(TextBox1) Then
        MsgBox "Captura un monto"
        Exit Sub
    End If
    '
    Set b = h.Columns("A").Find(ComboBox1, lookat:=xlWhole)
    If b Is Nothing Then
        MsgBox "El cliente no existe"
    Else
        fila = b.Row
        Set b = h.Rows(1).Find(ComboBox2, lookat:=xlWhole)
        If b Is Nothing Then
            MsgBox "La empresa no existe"
        Else
            h.Cells(fila, b.Column) = Val(TextBox1)
            MsgBox "Monto registrado"
        End If
    End If
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola:

Muchas gracias por tu respuesta pero no estoy pudiendo programarlo me salen errores y errores crees que me puedas dar todo el código.

Muchas gracias

Eso es todo el código.

Envíame tu archivo para adecuar la macro. Procura poner en la hoja de excel varios ejemplos y me los explicas con comentarios, es decir, qué datos capturo en el formulario y cómo deberían quedar en la hoja.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Ale bt” y el título de esta pregunta.

Lo que pasa es que el código está preparado para el ejemplo que pusiste, en donde el primer dato a llenar era el cliente y luego la empresa; y en el formulario primero pusiste la empresa. Los clientes los pusiste en la columna A y ahora aparecen en la columna C. Lo mismo para las empresas, en tu ejemplo las pusiste en la fila 1 y ahora aparecen en celdas combinadas en las filas 6 y 7.

Te anexo la macro con las actualizaciones

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h = Sheets("PRESU")
    If ComboBox1 = "" Then
        MsgBox "Seleciona una empresa"
        Exit Sub
    End If
    If ComboBox2 = "" Then
        MsgBox "Seleciona un cliente"
        Exit Sub
    End If
    If TextBox1 = "" Or Not IsNumeric(TextBox1) Then
        MsgBox "Captura un monto"
        Exit Sub
    End If
    '
    Set b = h.Rows("6:7").Find(ComboBox1, lookat:=xlWhole)
    If b Is Nothing Then
        MsgBox "La empresa no existe"
        Exit Sub
    Else
        col = b.Column
    End If
    '
    Set b = h.Columns("C").Find(ComboBox2, lookat:=xlWhole)
    If b Is Nothing Then
        'Registra el cliente
        f = 8
        Do While h.Cells(f, "C") <> ""
            f = f + 1
        Loop
        h.Cells(f, "C") = ComboBox2
        fila = f
    Else
        fila = b.Row
    End If
    h.Cells(fila, col) = Val(TextBox1)
End Sub

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas