El código me lleva al depurador

29/07/2008 - 03:39 por GRIEGO59 | Informe spam
Hola!
Tengo un código en un formulario que conseguí en este foro que muestra en
los textbox 7, 8, 9, 11, 12, 13, 14, 15 y 16, el último registro asociado a
un cliente seleccionado en el comboBox1.

El código funciona muy bien, pero si al seleccionar en el combobox1 un
cliente que no tiene registros en la hoja "Préstamos", el código me lleva al
depurador.

El combobox1 depende de la columna A de la hoja "Nombres"

El código esta basado en la hoja "Préstamos"

La hoja préstamos, muestra registros de los clientes.
Un cliente puede tener varios registros

El código es el siguiente:

Dim uFilaCliente

Private Sub ComboBox1_Change()

'Lleva el último registro del cliente al formulario
uFilaCliente = Evaluate("max(if(b2:b2000=""" & ComboBox1 &
""",row(b2:b2000)))")
TextBox7 = Range("c" & uFilaCliente - 0)
TextBox8 = Range("d" & uFilaCliente - 0)
TextBox9 = Range("e" & uFilaCliente - 0)
TextBox11 = Range("f" & uFilaCliente - 0)
TextBox12 = Range("g" & uFilaCliente - 0)
TextBox13 = Range("h" & uFilaCliente - 0)
TextBox14 = Range("i" & uFilaCliente - 0)
TextBox15 = Range("j" & uFilaCliente - 0)
TextBox16 = Range("k" & uFilaCliente - 0)

End Sub

Podrían ayudarme por favor?

Osiris Salazar

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
29/07/2008 - 04:59 | Informe spam
hola, Darío !

... un codigo en un formulario... muestra en los textbox 7, 8, 9, 11, 12, 13, 14, 15 y 16
el ultimo registro asociado a un cliente seleccionado en el comboBox1.
... funciona muy bien, pero si... en el combobox1 un cliente que no tiene registros
en la hoja "Prestamos", el codigo me lleva al depurador.
El combobox1 depende de la columna A de la hoja "Nombres"... basado en la hoja "Prestamos"
... muestra registros de los clientes. Un cliente puede tener varios registros



prueba a primero comprobar si existe (al menos) un registro del cliente (combobox1) en el rango (b2:b2000)
poniendo como primera instruccion en el evento '_change' del combobox algo +/- como lo siguiente:

If Application.CountIf(Range("b2:b2000"), ComboBox1) = 0 _
Then MsgBox "Cliente SIN registros en la hoja prestamos !": Exit Sub
' aqui continuas con tus acciones '

para la otra parte del codigo, prueba a usar un bucle con el numero del combo variable y en relacion con las columnas (p.e.)
Dim n As Byte
For n = 3 To 11
Controls("combobox" & n + 4 - (n > 5)) = Cells(uFilaCliente, n)
Next

saludos,
hector.

__ el codigo expuesto __
Dim uFilaCliente

Private Sub ComboBox1_Change()
'Lleva el ultimo registro del cliente al formulario
uFilaCliente = Evaluate("max(if(b2:b2000=""" & ComboBox1 & """,row(b2:b2000)))")
TextBox7 = Range("c" & uFilaCliente - 0)
TextBox8 = Range("d" & uFilaCliente - 0)
TextBox9 = Range("e" & uFilaCliente - 0)
TextBox11 = Range("f" & uFilaCliente - 0)
TextBox12 = Range("g" & uFilaCliente - 0)
TextBox13 = Range("h" & uFilaCliente - 0)
TextBox14 = Range("i" & uFilaCliente - 0)
TextBox15 = Range("j" & uFilaCliente - 0)
TextBox16 = Range("k" & uFilaCliente - 0)
End Sub
Respuesta Responder a este mensaje
#2 Héctor Miguel
29/07/2008 - 05:03 | Informe spam
hola (de nuevo), Darío ! (fe de erratas) :-((

donde dije "combo" debio decir "text" :D

para la otra parte del codigo, prueba a usar un bucle con el numero del combo variable y en relacion con las columnas (p.e.)
Dim n As Byte
For n = 3 To 11
Controls("combobox" & n + 4 - (n > 5)) = Cells(uFilaCliente, n)
Next



cambia:
Controls("combobox" & n + 4 - (n > 5)) = Cells(uFilaCliente, n)
por:
Controls("textbox" & n + 4 - (n > 5)) = Cells(uFilaCliente, n)

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida