Buscar dato por 2 criterios y actualizarlo (usando userform)

Tengo userform1 con 3 botones cmdagregar, cmdbuscar y cmdactualizar, 2 combobox (cmbequipo, cmbmotivo y 2 textbox (txtfecha, txtmonto) y en hoja1 A:Equipo, B:motivo C::fecha, D:monto .En hoja2 los registros de cada combo, en propiedad rowsource al dar click en c/u aparecen los registros que ya los tengo Ejm en cmbequipo Hoja2! A2:A10 auto, camioneta, etc, en cmbmotivo : Hoja2!B2:B15 mantenimiento, pintado, etc.

No hay problema al usar cmdagregar se guarda correctamente el problema surge cuando tengo datos repetidos por ejemplo en hoja1

 A               B                      C                 D                    E            

auto  mantenimiento :2018      15/05/2019         100

auto   pintado              2019        31/07/2019         300

Al seleccionar auto, mantenimiento y click en buscar llena los otros 3 textbox correctamentente pero si selecciono auto y pintado en los combos respectivos muestra lo mismos datos o sea no busca con los 2 criterios y sólo encuentra el primer del cmbequipo y no relaciona con el cmbmotivo .Para más claridad y análisis en lo que estoy equivocándome remito la codificación:

Private Sub Buscar()

ind = 0
Sheets("Hoja1").Select
Set minom = ActiveSheet.Range("A:A").Find(cmbequipo, LookIn:=xlValues, lookat:=xlWhole)
If Not minom Is Nothing Then
primer = minom.Address
Do
If minom.Offset(0, 1) = cmbmotivo.Value Then

minom.select

ind = 1
End If
Set minom = ActiveSheet.Range("A:A").FindNext(minom)
Loop While Not minom Is Nothing And minom.Address <> primer And ind = 0
txtfecha.Value = minom.Offset(0, 2) .................' Creo que aqui no van estos 2 párrafos
cmbmonto.Value = minom.Offset(0, 3)

End If

Set minom = Nothing
End Sub

Y me faltaría completar el código de Actualizar.

1 respuesta

Respuesta
1

Una vez que encuentre el dato debe guardar la fila... por ejemplo:

Do
If minom.Offset(0, 1) = cmbmotivo.Value Then
minom.select   'al seleccionar la celda encontrada, guarda la fila
    filx = minom.Row
ind = 1
End If
Set minom = ActiveSheet.Range("A:A").FindNext(minom)
Loop While Not minom Is Nothing And minom.Address <> primer And ind = 0
'se evalúa si encontró el dato.
If filx <> 0 then 
    txtfecha.Value = Range("A"& filx).Offset(0, 2) .................' Creo que aqui no van estos 2 párrafos
    cmbmonto.Value = Range("A" & filx).Offset(0, 3)
End If
End If

Podrías utilizar directamente la celda de la col fecha y monto:

txtfecha.value = Range("C" & filx)

Sdos  y no olvides valorar la respuesta.

Elsa

http://aplicaexcel.galeon.com/manuales.htm

En esta entrada de mi blog encontrarás un ejemplo para adaptar:

https://elsamatilde.blogspot.com/2018/03/interactuando-con-userform.html

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas