Autocompletar un textbox a partir de una combobox

Para Dante Amor

Hola! Estoy ingresando datos en una planilla de excel 2003 a partir del siguiente formulario:

Les comento: las combobox son dependientes y al ingresar un dato en ellas, en los textbox azules se carga automáticamente un valor. Mi BBDD tiene el siguiente aspecto:

Ahora bien, les explico lo que necesito en el textbox6:

Al cargar un dato en el combobox3, en el textbox6 se debe:

1- si el registro no existe, generar un código automáticamente.

2-Si el registro existe, debe aparecer automáticamente el valor del código en el textbox6.

Para resolver el primer punto, tengo la siguiente macro:

Sub LlenarTextbox()
    Set h1 = Sheets("BBDD")
    wmax = 0
    Set r = h1.Columns("D")
    Set b = r.Find(ComboBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            'detalle
            If h1.Cells(b.Row, "F") = ComboBox2 Then
                If h1.Cells(b.Row, "I") > wmax Then
                    wmax = h1.Cells(b.Row, "I")
                End If
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
        TextBox6 = wmax + 1
    End If
End Sub

Ahora bien, no puedo resolver el tema de que en caso de que exista el registro en el textbox6 se cargue automáticamente el código. Este código aparece en la columna I de la hoja "BBDD".

M u c h a s____g r a c i a s

1 Respuesta

Respuesta
2

H o l a:

Supongo que si no existe, entonces el código debe empezar con 1.

Prueba con la siguiente macro

Sub LlenarTextbox()
'Por.Dante Amor
    Set h1 = Sheets("BBDD")
    vmax = 0
    Set r = h1.Columns("D")
    Set b = r.Find(ComboBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            'detalle
            If h1.Cells(b.Row, "F") = ComboBox2 Then
                If h1.Cells(b.Row, "I") > wmax Then
                    wmax = h1.Cells(b.Row, "I")
                End If
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
        TextBox6 = vmax + 1
    Else
        TextBox6 = 1
    End If
End Sub

S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta. G r a c i a s

Si así es, pero esa no es mi pregunta. lo que necesito es que si el registro existe, traiga el código de la columna I (hoja "BBDD") al textbox6.

Pero eso ya lo hace, si existe entonces llena el textbox6 con un consecutivo.

O no entendí qué es lo que no hace la macro.

Envíame tu archivo y me lo explicas con un ejemplo. Recuerda poner tu nombre en el asunto del correo.

Ahí te mandé el archivo con un ejemplo para hacer más clara mi pregunta.

Prueba el siguiente código

Private Sub ComboBox3_Change()
'Por.Dante Amor
    Set h1 = Sheets("BBDD")
    For i = 2 To h1.Range("D" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "D") = ComboBox1 And _
           h1.Cells(i, "F") = ComboBox2 And _
           h1.Cells(i, "H") = ComboBox3 Then
            TextBox6 = h1.Cells(i, "I")
        End If
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas