Actualizar columnas desde textbox dependientes de combobox

Estimados cuento con el siguiente formulario

El cual contiene dos combobox dependientes, el combobox 1 carga los nombres de cada una de las hojas que contiene

Private Sub UserForm_Initialize()
Dim intHojas As Integer
    Dim i As Integer
    intHojas = ThisWorkbook.Sheets.Count
    For i = 3 To intHojas
        Me.ComboBox1.AddItem ThisWorkbook.Sheets(i).Name
    Next i
End Sub

El  combobox1 con el evento carga los datos de la columna A de cada hoja seleccionada en el combobox2

Private Sub ComboBox1_Change()
ComboBox2.Clear
Set h = Sheets(ComboBox1.Value)
    For i = 2 To h.Range("A" & Rows.Count).End(3).Row
        ComboBox2.AddItem h.Cells(i, 1)
    Next i
End Sub

Luego el evento change del combobox 2 carga los textbox correspondientes 

Private Sub ComboBox2_Change()
Set h = Sheets(ComboBox1.Value)
    Set b = h.Range("A:A").Find(ComboBox2.Text, lookat:=xlWhole)
    If Not b Is Nothing Then
        Fila = b.Row
        '
        TextBox1 = h.Cells(Fila, "B")
        TextBox2 = h.Cells(Fila, "C")
        TextBox3 = h.Cells(Fila, "G")
        TextBox4 = h.Cells(Fila, "M")
        '
        '
        '
    End If
End Sub

 Lo que requiero es que al seleccionar el botón actualizar me actualice los datos de los textbox del textbox 1 al textbox 4 en su fila correspondiente, 

1 Respuesta

Respuesta
1

Macro


Private Sub CommandButton1_Click()
 Set h = Sheets(ComboBox1.Value)
    Set b = h.Range("A:A").Find(ComboBox2.Text, lookat:=xlWhole)
    If Not b Is Nothing Then
        fila = b.Row
        '
        h.Cells(fila, "B") = TextBox1
        h.Cells(fila, "C") = TextBox2
        '
        'vas agregando el resto
        '
End Sub

Amigo en el formulario tengo un TextBox5 en el cual quisiera que figure la diferencia de días entre el TextBox 1 y el TextBox 4 Los cuales contienen fechas y que el TextBox 5 se pueda copiar en la columna N

Macro


Private Sub CommandButton1_Click()
 Set h = Sheets(ComboBox1.Value)
    Set b = h.Range("A:A").Find(ComboBox2.Text, lookat:=xlWhole)
    If Not b Is Nothing Then
        fila = b.Row
        '
        h.Cells(fila, "B") = TextBox1
        h.Cells(fila, "C") = TextBox2
        '
        '
        h.Cells(fila, "N") = TextBox5 'guarda la fecha
        'vas agregando el resto
End Sub
Private Sub TextBox1_Change()
calcularfecha
End Sub
Private Sub TextBox4_Change()
calcularfecha
End Sub
Sub calcularfecha()
On Error Resume Next
If IsDate(TextBox1) And IsDate(TextBox4) Then
    TextBox5.Text = ""
    TextBox5.Text = CDate(TextBox4.Text) - CDate(TextBox1.Text)
End If
End Sub

¡Gracias!

Muchas gracias estimado me ayudaste muchísimo

Estimado al momento de poner el código para limpiar las cajas de texto y los combobox posterior a registrar me genera un error

Private Sub CommandButton2_Click()
Set h = Sheets(ComboBox1.Value)
    Set b = h.Range("A:A").Find(ComboBox2.Text, lookat:=xlWhole)
    If Not b Is Nothing Then
        Fila = b.Row
        '
        h.Cells(Fila, "B") = TextBox1
        h.Cells(Fila, "C") = TextBox2
        h.Cells(Fila, "G") = TextBox3
        h.Cells(Fila, "M") = TextBox4
        '
        h.Cells(Fila, "N") = TextBox5 'guarda la fecha
        'vas agregando el resto
        End If
    Sheets("FORMULARIO").Select
    ComboBox2.Clear
   ComboBox1.Clear
     Call LimpiarTextBoxes
ComboBox1.SetFocus
End Sub
Sub LimpiarTextBoxes()
    TextBox1 = Empty
    TextBox2 = Empty
    TextBox3 = Empty
    TextBox4 = Empty
    TextBox5 = Empty
End Sub

Para limpiar el combobox usa

Combobox1=""

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas