Newsgroup: it.comp.lang.visual-basic
Titolo: excel: oggetto range

ciao a tutti, non riesco ad assegnare ad una variabile oggetto (Range) un
range filtrato con Autofilter.
l'istruzione:
dim r as Range
set r=Range("a1").Autofilter(field:=1,criteria:="pippo")
 mi da errore 424: necessario oggetto.
Usando la proprietą autofilter dell'oggetto range (o la proprietą Range
dell'oggetto AutoFilter) non dovrei ottenere un oggetto range?
Il mio problema č quello di ottenere una variabile range filtrato su cui
fare delle operazioni.
Help me please!

Help
me please!
Immagina di avere una tabella con nomi di campo quali quelli
che descrivo qui sotto e voglio creare un filtro con codice VBA su un campo
per il quale chiedo all'utente di indicarlo
Cod Articolo	Descrizione
Materiale	Qtà Rich	Pr Unit	Totale	Fornitore	Cod Fornit	Cod Art Fornit	Cod
Ut
33BC003508	ROTOLI	1	1,25	1,25	Pico Pallino	3	01565ATS6400 	1
33BC001005	SANITARI 	2	1,30	2,60	Vattelaoesca	3	ASC000202RO	2
Cerca di
mettere in ordine questi due record su un foglio di lavoro e prova il
seguente codice								
Range("A1").Select							
CodUtente =
Val(Application.InputBox("Digita il codice utente"))
Selection.AutoFilter
Field:=9, Criteria1:=CodUtente
Eventualmente fammi sapere se la strada è
giusta. Saluti
 
Il Picchio
--------------------------------
Inviato via 
http://usenet.iol.it
 

 ha scritto nel messaggio
news:62Z98Z147Z238Y...@usenet.iol.it...

Ciao Picchio, l'esempio che hai riportato va bene per applicare un filtro al
foglio e fin qui non c'è problema.
Quello che mi serve è il codice per salvare in una variabile oggetto il
range filtrato che devo poi usare in un modulo di Access.
a presto. ciao a tutti

a presto. ciao
a tutti
Gli altri chi sono?
Comunque risaluti


 Il Picchio
Non ci siamo ancora. Ti stai incazzando? spero di no perchè vorrei
aproffittare della tua disponibilità!
Con il tuo codice avviene la selezione della tabella filtrata ma nella
variabile oggetto (che da ora in poi chiameremo semplicemente variabile per
comodità)MioInt ottengo solo le righe e filtrate ma tutta la tabella.
Mi spiego meglio (ci provo)
se ho una tabella del tipo:
data        prodotto    prezzo    richiesta
mar-02    mele        23,50    si
mar-02    pere        12,50    no
mar-02    patate        11,23    si
apr-02    mele        22,45    si
apr-02    pere        34,90    si
apr-02    patate      56,87    no
(come capirai la tabella è completamente inventata)
se applico il filtro sul campo *richiesta* =no ottengo:
data        prodotto    prezzo    richiesta
mar-02    pere        12,50    no
apr-02    patate      56,87    no
A questo punto nella mia variabile MioInt mi devo ritrovare solo quelle due
righe (giusto?!) e se uso un ciclo for per leggere i dati in MioInt dovrei
ottenere che:
MioInt(2,4)=no 'seconda riga quarta colonna
MioInt(3,4)=no ' ecc.
Invece ottengo:
MioInt(2,4)=si 'la cella a4
MioInt(3,4)=no 'cella b4
ecc.
In pratica mi ritrovo tutta la tabella senza filtro.
Spero di essere stato chiaro e che tu mi possa aiutare.
Alla prossima. Ciao

Alla prossima. Ciao
Premetto che ritengo il tono della tua
risposta maleducato, provo comunque a risolvere il problema.
Di seguito
sviluppo il codice anteposto dalla tabella che hai riportato nella
precedente risposta.
Per far sì che si leggano effettivamente i record
filtrati ho pensato che nulla toglie che si copi la selezione così ottenuta
con il filtro, su un  foglio nuovo dopodichè quest'ultimo sarà fatto
sparire in modo silenzioso così come è stato creato.
data
prodotto   	prezzo   	richiesta
mar-02   	mele	23,5	si
mar-02   	pere
12,5	no
mar-02    	patate	11,23	si
apr-02   	mele	22,45	si
apr-02
pere	34,9	si
apr-02   	patate	56,87	no
L'incollagio è avvenuto in modo
anomalo ma non è questo il problema
Ora scrivo il codice
Set FglPartenza
= ActiveSheet
Range("A1").Select
Richiesta = Application.InputBox("Digita
la stringa della richiesta", "Così è se vi pare", "no")
Selection.AutoFilter Field:=4, Criteria1:=Richiesta
Set MioInterv =
Range("A1").CurrentRegion
MioInterv.Select
Selection.Copy
Set NuovoFgl =
Sheets.Add
ActiveSheet.Paste
Application.CutCopyMode = False
NrRighe =
Range("A1").CurrentRegion.Rows.Count
For i = 1 To NrRighe - 1
MsgBox
"Valore della cella in D" & i + 1 & " è " & Range("A1").Offset(1).Cells(i,
4)
Next
Application.DisplayAlerts = False
NuovoFgl.Delete
Application.DisplayAlerts = True
FglPartenza.Select
Selection.AutoFilter
Set MioInterv = Nothing
Set NuovoFgl = Nothing
Set FglPartenza = Nothing
Fammi sapere se questo ti aggrada.


 Il Picchio
Una soluzione a cui avevo pensato anch'io ma mi pareva poco elegante. Cmq è
un trucchetto che risolve il mio problema e ti ringrazio per i consigli che
mi hai dato.
P.S.:Il tutto deve avvenire da un modulo access e quindi potrei anche usare
una tabella collegata al foglio di lavoro excel forse mi semplifica il
tutto. Tu cosa mi consigli?
A presto.