Visual Basic para Aplicaciones - Formulario no se cierra

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Formulario no se cierra

Publicado por albert (204 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
sin imagen de perfil

Formulario no se cierra

Publicado por Victor Luis (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: [email protected]
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