Error 1004 en tiempo de ejecución

03/10/2008 - 05:27 por GRIEGO59 | Informe spam
Hola!
Tengo un combobox "Proveedores" que selecciona proveedores de una hoja pero
al desplegar el combobox, si en lugar de seleccionar un proveedor, yo escribo
una letra que no concide con la inicial de alguno de los provedores, me da el
error 1004.

El combobox "Proveedores" filtra los productos por proveedores del combobox
"Productos".

Los resultados del combobox productos van al Textbox1.

El código es el siguiente:
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
'Inhabilita botón "Cerrar formulario"
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 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 Productos_Change()
With Worksheets("códigos")
TextBox1 = Productos.Value

End With
End Sub

Private Sub UserForm_Terminate()
With Worksheets("códigos")
.Columns("d:i").Clear
Debug.Print .UsedRange.Address
End With
End Sub

Gracias por la ayuda,
Darío
 

Leer las respuestas

#1 Héctor Miguel
03/10/2008 - 05:44 | Informe spam
hola, Darío !

... un combobox... selecciona proveedores de una hoja pero al desplegar el combobox
si en lugar de seleccionar un proveedor, yo escribo una letra que no concide con la inicial de alguno de los provedores
me da el error 1004...



esto se debe a que los filtros avanzados no encuentran nada que extraer (y empieza un caos de ahi en adelante)
ademas, no se si sea realmente necesario "teclear" en el cuadro de edicion del combobox (en lugar de SOLO seleccionar) -???-
porque en cada "teclazo" se esta disparando el evento '_change' del combobox (y las acciones contenidas en el codigo)

si NO es imprescindible usar el cuadro de edicion en el combobox, prueba a inhabilitarlo como cuadro de texto...
en las propiedades del combobox, cambia su propiedad "Style" (para que no se pueda "teclear" en el)...
de: -> 0 - fmStyleDropDownCombo
a: -> 2 - fmStyleDropDownList

de lo contrario, vas a necesitar "mover" de evento las acciones con los filtros avanzados -?-

saludos,
hector.

__ fraccion del codigo expuesto __
Private Sub Proveedores_Change()
Productos.Clear
If CargandoProveedores Then Exit Sub
With Worksheets("codigos")
.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

Preguntas similares