Visual Basic para Aplicaciones - Formulario no se cierra

Life is soft - evento anual de software empresarial
   
Vista:

Formulario no se cierra

Publicado por albert (108 intervenciones) el 08/03/2013 19:21:45
Buenas tardes Foreros:
En una aplicación que estoy montando tengo un error que no soy capaz de encontrar, os cuento
Tengo dos formularios El principal (Usf_Trabajos) en el que tengo un combobox donde aparecen los clientes, si el cliente no existe entonces:

Private Sub ComboBox1_AfterUpdate()
'Miro si el cliente existe y si no, abro Formulario para añadirlo
Dim i As Integer
Dim Final As Integer

For i = 4 To 10000
If Hoja5.Cells(i, 1) = "" Then
Final = i - 1
Exit For
End If
Next

For i = 4 To Final

Cliente = Usf_Trabajos.ComboBox1.Value
Set busca = Hoja5.Range("a4:a" & Final).Find(Cliente)
If busca Is Nothing Then
Unload Me
Usf_Clientes.Show
End If
Next

End Sub

Al no existir abre el 2º Formulario (Usf_Clientes) donde introduzco todos los datos del cliente y llamo a un modulo
Private Sub CommandButton1_Click()
Call AceptarCliente.AceptarCliente

End Sub

Que guarda los datos cierra el Form 2 y abre el 1

Sub AceptarCliente()

For i = 4 To 10000
If Hoja5.Cells(i, 1) = "" Then
Final = i
Exit For
End If
Next

Hoja5.Cells(Final, 1) = Usf_Clientes.TextBox1 'Nombre
"aqui el resto de datos"
Usf_Clientes.Hide
Usf_Trabajos.Show
End Sub

El problema es que me entra en un bucle y me queda el 2 abierto y si intento cerrarlo con la X del Formulario le tengo que dar entre 4 y 8 veces y la aplicación se bloquea y la tengo que cerrar con Ctrl+Alt+Supr

Por mas pruebas que he hecho no encuentro donde esta el error
Mil gracias de Antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Formulario no se cierra

Publicado por Victor Luis viluarte22@hotmail.com (2 intervenciones) el 14/07/2013 15:48:40
Holas...

Hago unas observaciones a tu codigo:
○ Para buscar la ultima fila puedes usar esta funcion.
Final = Hoja5.Range("A" & Rows.Count).End(xlUp).Row

○ Si estas programando en VBA por que no guardas los datos del cliente en un Registro y lo Archivas? Declarando una variable puedes crear la estructura que necesites para guardar la informacion que necesites. Lees el archivo y cargas a un vector y con esto ya sabes cuantos clientes tienes y solo debes agregar el Nuevo al final.

Si te parece comenta a: viluarte22@hotmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar