Filtrar lista de cuadro conbinado y mostrar varias columnas

20/09/2008 - 05:12 por GRIEGO59 | Informe spam
Hola!
En un formulario tengo un combobox1 con este código:

'Carga el combobox con los productos al activar el formulario
Private Sub UserForm_Activate()
Sheets("Códigos").Select
Range("a1").Select

Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
ComboBox1.AddItem ActiveCell
Loop
End Sub

La lista del cuadro combinado muestra la columna "a".
Los títulos de las columnas a, b y c son Código, producto, proveedor.

Quisiera que la lista del cuadro combinado muestre las columnas "a", "b" y
"c" de la hoja "códigos" y se seleccione la columna "a"

Quisiera, si es posible, que la lista del combobox1 muestre los productos
asociados al proveedor seleccionado en un combobox2.

Gracias por la ayuda,

Darío

Preguntas similare

Leer las respuestas

#6 GRIEGO59
22/09/2008 - 03:53 | Informe spam
: (

"Héctor Miguel" escribió:

hola, Darío !

> Al abrir el formulario me da el siguiente mensaje:
> "Error de compilacion, no se ha definido variable"
> Se activa el depurador marcando las siguientes lineas:
> Private Sub UserForm_Initialize()
> CargandoProveedores = True
>
> Saludos,
> Dario

me parece raro, ya que la variable "CargandoProveedores" (precisamente)
-> ES la primer linea del codigo sugerido (en el area de declaraciones)...
>> en el modulo de codigo del formulario ==> >>
>> Private CargandoProveedores As Boolean
>> Private Sub UserForm_Initialize()
>> CargandoProveedores = True
>> (...)

saludos,
hector.



Respuesta Responder a este mensaje
#7 GRIEGO59
22/09/2008 - 04:12 | Informe spam
Acabo de copiar el código, desde mi libro de excel a otro libro nuevo de
excel con un nuevo formulario y funiona perfectamente.
Pero en mi libro con mi formulario, no funciona


"Héctor Miguel" escribió:

hola, Darío !

> Al abrir el formulario me da el siguiente mensaje:
> "Error de compilacion, no se ha definido variable"
> Se activa el depurador marcando las siguientes lineas:
> Private Sub UserForm_Initialize()
> CargandoProveedores = True
>
> Saludos,
> Dario

me parece raro, ya que la variable "CargandoProveedores" (precisamente)
-> ES la primer linea del codigo sugerido (en el area de declaraciones)...
>> en el modulo de codigo del formulario ==> >>
>> Private CargandoProveedores As Boolean
>> Private Sub UserForm_Initialize()
>> CargandoProveedores = True
>> (...)

saludos,
hector.



Respuesta Responder a este mensaje
#8 Héctor Miguel
22/09/2008 - 04:19 | Informe spam
hola, Darío !

Acabo de copiar el codigo, desde mi libro de excel a otro libro nuevo de excel con un nuevo formulario y funiona perfectamente.
Pero en mi libro con mi formulario, no funciona ...



en el libro donde no funciona... tienes otros codigos/eventos/... que pudieran interferir con la forma propuesta que si funciona ?
(p.e. en el evento '_activate' y/o en otras partes de codigo/modulos/... donde administres controles y formularios ?)

saludos,
hector.
Respuesta Responder a este mensaje
#9 GRIEGO59
22/09/2008 - 04:50 | Informe spam
Bueno conseguir códigos que interfieran con el tuyo, no se exactamente.

Tengo un código activate en el formulario, asi:

'Cierra el formulario con un botón "Cerrar"
'Previamente se ha inhabilitado el botón cerrar que trae
'el formulario con "Option Explicit" y "UserForm_QueryClose..."
Private Sub cmdCerrar_Click()
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
TextBox7 = Empty
CheckBox1 = False
CheckBox2 = False
CheckBox3 = False

ActiveWorkbook.Save 'para grabar antes de cerrar el libro
Sheets("Bienvenido").Select
Unload Me
End Sub



El código completo del formulario es así:

'Forma parte del código para inhabilitar botón de cerar formulario
'Se usa junto con el comando cmdCerrar no sé para
'qué se usa el "cmd" pero se escribe antes del nombe del botón
'"cerrar" y se usa junto con el comando "UserForm_QueryClose..."
'que está más abajo.
Option Explicit

'Borra formulario de ventas
Private Sub Borrar_Click()
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
TextBox7 = Empty
CheckBox1 = False
CheckBox2 = False
CheckBox3 = False

TextBox1.SetFocus
End Sub



Private Sub CommandButton7_Click()
' Abrir formulario de ventas desde hoja de bienvenida
Unload Me
BloqueaTeclado.Show

End Sub

'Forma de pago: Efectivo
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
Sheets("ImprimirFactura").[c13] = "Forma de pago: Efectivo"
Else
Sheets("ImprimirFactura").[c13] = ""
End If
End Sub
'Forma de pago: Tarjeta de débito
Private Sub CheckBox2_Click()
If CheckBox2 = True Then
Sheets("ImprimirFactura").[c14] = "Forma de pago: Tarjeta de Débito"
Else
Sheets("ImprimirFactura").[c14] = ""
End If

End Sub
'Forma de pago: Tarjeta de crédito
Private Sub CheckBox3_Click()
If CheckBox3 = True Then
Sheets("ImprimirFactura").[c15] = "Forma de pago: Tarjeta de Crédito"
Else
Sheets("ImprimirFactura").[c15] = ""
End If
End Sub

'Cierra el formulario con un botón "Cerrar"
'Previamente se ha inhabilitado el botón cerrar que trae
'el formulario con "Option Explicit" y "UserForm_QueryClose..."
Private Sub cmdCerrar_Click()
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
TextBox7 = Empty
CheckBox1 = False
CheckBox2 = False
CheckBox3 = False

ActiveWorkbook.Save 'para grabar antes de cerrar el libro
Sheets("Bienvenido").Select
Unload Me
End Sub


'Abre formulario "Clientes" desde formulario "Ventas"
Private Sub CommandButton3_Click()
If [c7] = "" Then _
MsgBox "Primero introduce la venta, luego el cliente!": _
[c7].Select: Exit Sub

If [q3] > 1 Then _
MsgBox "No saltes líneas, por favor!": _
[c7].Select: Exit Sub
Clientes.Show

End Sub


Private Sub CommandButton4_Click()
'Solicita reporte de ventas desde Formulario de ventas
' Aplica filtro avanzado
Worksheets("ventas").Unprotect "***"
Worksheets("ReporteVentas").Unprotect "***"
Sheets("ventas").Select
Columns("A:S").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range( _
"AE1:AE2"), CopyToRange:=Range("U1:AC1"), Unique:=False
' Copia filtro avanzado a la hoja ReporteVentas
Sheets("ventas").Select
Range("U2:AC65536").Select
Selection.Copy
Sheets("ReporteVentas").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("ventas").Select
Application.CutCopyMode = False
Selection.ClearContents
Worksheets("ventas").Protect "***"
Worksheets("ReporteVentas").Protect "***"
Sheets("ReporteVentas").Select
Range("A1").Select
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
TextBox7 = Empty
CheckBox1 = False
CheckBox2 = False
CheckBox3 = False

Unload Me
End Sub

Private Sub CommandButton5_Click()
'Solicita reporte de Movimientos desde Formulario de ventas
'Aplica filtro avanzado a ventas
Worksheets("ventas").Unprotect "***"
Worksheets("Movimientos").Unprotect "***"
Sheets("ventas").Select
Columns("A:S").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range( _
"AS1:AT2"), CopyToRange:=Range("AG1:AR1"), Unique:=False

'Copia filtro avanzado de ventas
Sheets("ventas").Select
Range("AG2:AR65536").Select
Selection.Copy
Sheets("Movimientos").Select

'Pega filtro avanzado de ventas en la hoja Movimientos
Range("A2").Select
ActiveSheet.Paste
Sheets("ventas").Select
Application.CutCopyMode = False

'Aplica filtro avanzado a compras
Sheets("Compras").Select
Columns("A:S").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range( _
"AS1:AT2"), CopyToRange:=Range("AG1:AR1"), Unique:=False

'Copia filtro avanzado de compras
With Worksheets("compras")
.Range("ag2:ar2").Resize(30000 - Application.CountIf(.Range("ag2:ag30001"),
"")).Copy
End With

'Selecciona última fila de la hoja movimientos y pega filtro avanzado
'de compras en la hoja
Worksheets("Movimientos").Range("a65536").End(xlUp) _
.Offset(1).PasteSpecial xlPasteValues
Application.CutCopyMode = False

'Borra lo innecesario
Sheets("ventas").Select
Range("AG2:AR65536").Select
Selection.ClearContents
Sheets("compras").Select
Range("AG2:AR65536").Select
Selection.ClearContents
Worksheets("ventas").Protect "***"
Worksheets("Movimientos").Protect "***"
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
CheckBox1 = False
CheckBox2 = False
CheckBox3 = False

Unload Me
Sheets("Movimientos").Select
Range("A1").Select

End Sub
' Muestra la hoja "arqueo de caja"
Private Sub CommandButton6_Click()
Sheets("Arqueo de caja").Select
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
TextBox7 = Empty
CheckBox1 = False
CheckBox2 = False
CheckBox3 = False

Unload Me
End Sub


Private Sub Imprimir_Click()
Sheets("imprimirFactura").Select
ActiveSheet.PrintOut
Sheets("factura").Select
[c7].Select
End Sub

'PRUEBA PARA SI CEDULA DE CLIENTE INEXISTENTE, ME LLEVA A CÉDULA CLIENTE
Private Sub TextBox40_AfterUpdate()
Sheets("imprimirfactura").Select
If Evaluate("iserror(b3)") Then IngresarCliente.Show

End Sub

Private Sub TextBox40_Change()
Sheets("ImprimirFactura").[b5] = TextBox40.Value
TextBox41 = Sheets("ImprimirFactura").[b3].Text

End Sub

Private Sub TextBox41_Enter()
TextBox41 = Sheets("ImprimirFactura").[b3].Text
End Sub

Private Sub TextBox42_Change()
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox43_Change()
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox44_Change()
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox45_Change()
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox46_Change()
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox47_Change()
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox48_Change()
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)
End Sub

'Inhabilita botón "Cerrar formulario" se usa junto con
'los comandos "Option Explicit" y "UserForm_QueryClose..."
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox "Use el botón CERRAR del formulario", vbInformation, " Botón No
Disponible "
Cancel = 1
CloseMode = 1
End If
End Sub


Private Sub Guardar_Click()
Application.ScreenUpdating = False 'Para que no se vean los saltos de pantalla
Worksheets("ventas").Unprotect "***"
Worksheets("factura").Unprotect "***"
Sheets("factura").Select
[c7].Select
If TextBox1 = "" Then _
MsgBox "Primero introduce la venta, luego guarda la factura!": _
[c7].Select: Exit Sub
If Evaluate("iserror(u7)") Then MsgBox "El código de la blusa no existe!": _
TextBox1.SetFocus: Exit Sub
If Evaluate("iserror(u8)") Then MsgBox "El código de la blusa no iexiste!": _
TextBox2.SetFocus: Exit Sub
If Evaluate("iserror(u9)") Then MsgBox "El código de la blusa no existe!": _
TextBox3.SetFocus: Exit Sub
If Evaluate("iserror(u10)") Then MsgBox "El código de la blusa no existe!": _
TextBox4.SetFocus: Exit Sub
If Evaluate("iserror(u11)") Then MsgBox "El código de la blusa no existe!": _
TextBox5.SetFocus: Exit Sub
If Evaluate("iserror(u12)") Then MsgBox "El código de la blusa no existe!": _
TextBox6.SetFocus: Exit Sub
If Evaluate("iserror(u13)") Then MsgBox "El código de la blusa no existe!": _
TextBox7.SetFocus: Exit Sub
If [q3] > 1 Then _
MsgBox "No saltes líneas, por favor!": _
[c7].Select: Exit Sub

'Para copiar los valores de la factura en la hoja ventas

With Worksheets("factura")
.Range("m7:ac7").Resize(16 - Application.CountIf(.Range("m7:m22"), "")).Copy
End With
Worksheets("ventas").Range("a65536").End(xlUp) _
.Offset(1).PasteSpecial xlPasteValues
Application.CutCopyMode = False

[r3] = [m3] 'Correlativo del número de factura
[s7] = [n3] 'Correlativo del Id Ventas.
Range("c7:c22").ClearContents
Range("AJ7:AZ22").ClearContents
[c7].Select

'Cuadra arqueo de caja

TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
TextBox7 = Empty
TextBox42 = Empty
TextBox43 = Empty
TextBox44 = Empty
TextBox45 = Empty
TextBox46 = Empty
TextBox47 = Empty
TextBox48 = Empty
TextBox51 = Empty
TextBox54 = Empty
TextBox55 = Empty
TextBox56 = Empty
TextBox57 = Empty
CheckBox1 = False
CheckBox2 = False
CheckBox3 = False

TextBox1.SetFocus
Worksheets("ventas").Protect "***"
Worksheets("factura").Protect "***"

End Sub

Private Sub TextBox1_Change()
N = Sheets("factura").[r3].Text 'Lleva al formulario el número de factura
Fecha = Sheets("factura").[w3].Text 'Lleva al formulario la fecha

Sheets("Factura").[t7] = TextBox1.Value 'Lleva al formulario el código
TextBox17 = Sheets("factura").[u7].Text 'Lleva al formulario la descripción
TextBox33 = Sheets("factura").[ac7].Text 'Lleva al formulario el PVP
Label8 = Sheets("bienvenido").[d15].Text 'Lleva al formulario el Salmo

Label6 = "SNC777-" & Sheets("factura").[e31].Text & "777" 'Lleva al
formulario el total vendido del día
Subtotal = Val(TextBox33) + Val(TextBox34) + Val(TextBox35) + Val(TextBox36)
+ Val(TextBox37) + Val(TextBox38) + Val(TextBox39)
IVA = Val(Subtotal) * 0 / 100
Total = Val(Subtotal) + Val(IVA)
'Cálculo del vuelto para el cliente
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub


Private Sub TextBox2_Change()
Sheets("Factura").[t8] = TextBox2.Value
TextBox18 = Sheets("factura").[u8].Text
TextBox34 = Sheets("factura").[ac8].Text
Subtotal = Val(TextBox33) + Val(TextBox34) + Val(TextBox35) + Val(TextBox36)
+ Val(TextBox37) + Val(TextBox38) + Val(TextBox39)
IVA = Val(Subtotal) * 0 / 100
Total = Val(Subtotal) + Val(IVA)
'Cálculo del vuelto para el cliente
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox3_Change()
Sheets("Factura").[t9] = TextBox3.Value
TextBox19 = Sheets("factura").[u9].Text
TextBox35 = Sheets("factura").[ac9].Text

Subtotal = Val(TextBox33) + Val(TextBox34) + Val(TextBox35) + Val(TextBox36)
+ Val(TextBox37) + Val(TextBox38) + Val(TextBox39)
IVA = Val(Subtotal) * 0 / 100
Total = Val(Subtotal) + Val(IVA)
'Cálculo del vuelto para el cliente
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox4_Change()
Sheets("Factura").[t10] = TextBox4.Value
TextBox20 = Sheets("factura").[u10].Text
TextBox36 = Sheets("factura").[ac10].Text

Subtotal = Val(TextBox33) + Val(TextBox34) + Val(TextBox35) + Val(TextBox36)
+ Val(TextBox37) + Val(TextBox38) + Val(TextBox39)
IVA = Val(Subtotal) * 0 / 100
Total = Val(Subtotal) + Val(IVA)
'Cálculo del vuelto para el cliente
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox5_Change()
Sheets("Factura").[t11] = TextBox5.Value
TextBox21 = Sheets("factura").[u11].Text
TextBox37 = Sheets("factura").[ac11].Text

Subtotal = Val(TextBox33) + Val(TextBox34) + Val(TextBox35) + Val(TextBox36)
+ Val(TextBox37) + Val(TextBox38) + Val(TextBox39)
IVA = Val(Subtotal) * 0 / 100
Total = Val(Subtotal) + Val(IVA)
'Cálculo del vuelto para el cliente
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox6_Change()
Sheets("Factura").[t12] = TextBox6.Value
TextBox22 = Sheets("factura").[u12].Text
TextBox38 = Sheets("factura").[ac12].Text

Subtotal = Val(TextBox33) + Val(TextBox34) + Val(TextBox35) + Val(TextBox36)
+ Val(TextBox37) + Val(TextBox38) + Val(TextBox39)
IVA = Val(Subtotal) * 0 / 100
Total = Val(Subtotal) + Val(IVA)
'Cálculo del vuelto para el cliente
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub

Private Sub TextBox7_Change()
Sheets("Factura").[t13] = TextBox7.Value

TextBox23 = Sheets("factura").[u13].Text
TextBox39 = Sheets("factura").[ac13].Text

Subtotal = Val(TextBox33) + Val(TextBox34) + Val(TextBox35) + Val(TextBox36)
+ Val(TextBox37) + Val(TextBox38) + Val(TextBox39)
IVA = Val(Subtotal) * 0 / 100
Total = Val(Subtotal) + Val(IVA)
'Cálculo del vuelto para el cliente
TextBox49 = Val(TextBox42) * 5 + Val(TextBox43) * 10 + Val(TextBox44) * 20 +
Val(TextBox45) * 50 + Val(TextBox46) * 100 + Val(TextBox47) + Val(TextBox48)
TextBox50 = Val(TextBox49) - Val(Total)

End Sub


'Ubica el formulario en posición fija. No se puede mover
Private Sub UserForm_Layout()
Me.Move 2, 2
End Sub





Private CargandoProveedores As Boolean
Private Sub UserForm_Initialize()
CargandoProveedores = True
Productos.ColumnCount = 2
Productos.ColumnWidths = "75;40"
With Worksheets("códigos")
.Range("e1:f1") = .Range("c1")
.Range("a1").CurrentRegion.Offset(, 2).Resize(, 1).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=.Range("e1"), Unique:=True
.Columns("e").Sort Key1:=.Range("e1"), Order1:=xlAscending, Header:=True
Proveedores.List = .Range(.Range("e2"), .Range("e2").End(xlDown)).Value
End With
CargandoProveedores = False
End Sub
Private Sub Proveedores_Change()
Productos.Clear
If CargandoProveedores Then Exit Sub
With Worksheets("códigos")
.Range("f2") = Proveedores.Value
.Range("h1:i1").Value = .Range("a1:b1").Value
.Range("a1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=.Range("f1:f2"), _
CopyToRange:=.Range("h1:i1")
With .Range("h1").CurrentRegion
Productos.List = .Offset(1).Resize(.Rows.Count - 1).Value
End With
End With
End Sub
Private Sub UserForm_Terminate()
With Worksheets("códigos")
.Columns("d:i").Clear
Debug.Print .UsedRange.Address
End With
End Sub
Respuesta Responder a este mensaje
#10 Héctor Miguel
22/09/2008 - 05:39 | Informe spam
hola, Darío !

no se cual sea "el orden" en que cada codigo esta ubicado dentro del modulo del formulario -?-
dentro de las "sanas costumbres" (o habitos) para lograr una +/- buena programacion te puedo mencionar:

- las declaraciones se ponen al inicio del modulo
variables (Dim... Private..., etc.), llamadas a las API's, tipos personalizados, etc.

- para los procedimientos (o eventos) es conveniente usar el orden "esperado" en que sucederan (o se requieran)

- hay mas, pero como decia: "son costumbres" (y las costumbres "se van adquiriendo" y depurando/adaptando/...)

te sugiero que cambies algunos procedimientos/eventos/... en el orden dentro del modulo:

1) las declaraciones (como "Option Explicit", "Option Private Module", => Private CargandoProveedores As Boolean, etc.)
2) el evento '_Initialize' del formulario
3) el evento '_Activate' del formulario
4) el evento '_QueryClose'
5) el evento '_Terminate'
6) -> los eventos de los controles +/- segun "su orden" (tabulacion, arreglo, secuencia logica, etc. etc. etc.)
7) cualquier procedimiento/funcion personalizada extra (de aplicacion exclusiva para el formulario)

prueba despues de "arreglar" el orden de procedimientos en tu modulo y...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida