Combobox dependiente de otro combobox

buen dia, tengo un formulario para ingresar productos, el cual ingreso un código y me completa :descripción, precio costo, stock y me deja para ingresar la cantidad que e comprado.

De la mismo forma con la descripción si la encuentra me completa :el código, precio costo, stock y me deja poner la cantidad.

hasta ahi todo bien, el problema surge cuando tengo que ingresar un producto nuevo, al no encontrarlo me borra todo y no puedo ingresar nuevos productos.

Por el momento genere dos formularios.

1) para agregar stock de productos ya adquiridos(usando un combobox "código" y un combobox "descripción")

2) para agregar productos nuevos.(usando un combobox "código" y un textbox "descripción")

la idea es tener uno solo, yo había hecho un formulario que andaba bien, con cmbbox "código" y "txtdescripcion" . De esa forma podía agregar productos nuevo O stock de producto ya existentes pero solamente podía hacer búsqueda por "código" (no por descripción) y hay veces que el código no te acordás y lo quieres ingresar por descripción.

le adjunto el código que necesito mejorar:

Private Sub cmbcodigo_Change()
dato = cmbcodigo.Value
Set busco = Sheets("PRODUCTOS").Range("A:A").Find(dato, LookIn:=xlValues, lookat:=xlWhole)
'si lo encontró pasa los datos del resto de col a los textbox
If Not busco Is Nothing Then
cmbdescripcion = busco.Offset(0, 1) 'col B
Txtstock = busco.Offset(0, 2) 'col C
txtPreciocosto = busco.Offset(0, 3) 'col d
Else
cmbdescripcion = ""
Txtstock = ""
txtPreciocosto = ""
End If
End Sub


Private Sub cmbdescripcion_Change()
dato = cmbdescripcion.Value
Set busco = Sheets("PRODUCTOS").Range("B:B").Find(dato, LookIn:=xlValues, lookat:=xlWhole)
'si lo encontró pasa los datos del resto de col a los textbox
If Not busco Is Nothing Then
cmbcodigo = busco.Offset(0, -1) 'col A
Txtstock = busco.Offset(0, 1) 'col C
txtPreciocosto = busco.Offset(0, 2) 'col d
Else
cmbcodigo = ""
Txtstock = ""
txtPreciocosto = ""
End If
End Sub

Desde ya muchas gracias

Añade tu respuesta

Haz clic para o