|
Domanda.
da: Pino Masala nuovetec.srl@tiscalinet.it
Egregio Sig. Biondi, mi riferisco alla Sua graditissima e-mail del 16/09/03
con la quale mi erudiva su come risolvere il mio problema di filtrazione
dati per trovare infine la data maggiore correlata ai dati filtrati. Come da
Lei indicato ho eseguito, prima della sua routine "sub cerca", l’esempio
riportato al punto uno della e-mail vale a dire "filtrare dati col vba",
esempio reperito c/o il suo sito.
Adattandolo al mio caso ho scritto:
Private Sub CommandButton3_Click()
Set zona = Worksheets("ArchivioOrdini").Range("A1:J65535") ' foglio e range
in cui si trovano i
' dati da filtrare
x = zona.Columns.Count
Dim Criterio
Campo = "DESCRIZIONE ARTICOLO"
If Campo = "" Then Exit Sub
If Val(Campo) > x Then
MsgBox "Campo non presente"
Exit Sub
End If
Criterio = UserForm4.TextBox2.Value
If Criterio = "" Then Exit Sub
Dim CL As Object
Set pippo = zona.Cells(1, Val(Campo))
For Each CL In Range(pippo, pippo.End(xlDown))
If CL.Value = Criterio Then
GoTo 10
End If
Next
MsgBox "Criterio non presente"
Exit Sub
10:
zona.Cells(1, 1).Select
Selection.AutoFilter
Selection.AutoFilter Field:=Campo, Criteria1:=Criterio
zona.Cells(1, 1).Select
End Sub
Purtroppo però lanciando la routine viene generato il messaggio "errore di
run-time 1004. Errore definito dall’applicazione o dall’oggetto". Andando
nel "Debug" viene evidenziata in giallo la riga "Set pippo = zona.Cells(1,
Val(Campo))".
Non riesco a capire perché. Potrebbe aiutarmi?
Grazie, Pino
Risposta.
ciao Pino, l'errore deriva dal fatto che per Campo si deve inserire il
NUMERO del campo e non la intestazione di colonna. Tu assegni a Campo
"DESCRIZIONE ARTICOLO", che è una stringa, e questo genera l'errore. Se
riguardi il mio esempio, il numero del campo lo faccio prendere con una
inputbox, il cui messaggio è chiaro : Campo = InputBox("Inserire
il numero del campo di ricerca")
Ora tu usi una costante, va bene lo stesso, ma devi scrivere il numero di
colonna su cui vuoi effettuare la filtrazione, e senza doppi apici, quindi
se "DESCRIZIONE ARTICOLO" è nella colonna C, la 3, la tua istruzione dovrà
essere:
Campo = 3
A questo punto però non ti servono più neanche le istruzioni che controllano
se il campo esiste, visto che è fisso. Forse è meglio se rileggi, magari
stampandotela, la pagina dell'articolo, in particolare i primi due
paragrafi, che spiegano il perchè delle istruzioni usate.
saluti, ennius
|