Criteri filtro da textbox

Anonimo
2009-09-17T11:19:33+00:00

Innanzitutto un saltuto a tutta la comunità e complimenti per il nuovo forum.

Cortesemente un aiuto con VB che mi sto impiccando :-(( ...

Dovrei applicare una serie di filtri al Foglio1 in base a scelte fatte in textbox e il risultato copiarlo al Foglio2.

Mi spego ho una userform con 4 textbox

TextBox1 = "Cognome e Nome"  colonna B

TextBox2 = "Città"  colonna C

TextBox3 = "Provincia"  colonna D

TextBox4 = "Data di nascita" colonna E

Se ad esempio metto

TextBox1 = "Pinco Pallino"

TextBox2 = "Albano Laziale"

TextBox3 = "Roma"

TextBox4 = "01/01/1900"

le scelte delle 4 text diventano i criteri di ricerca dei filtri nelle relative colonne.

Volevo inoltre fare in modo che mi prendesse in considerazione solo i criteri scelti, in modo che possa ad esempio fare ricerca solo per nome, o solo per città o ambedue; ecc...

Ho provato con qualcosa del genere, ma non funge :-((

Private Sub CommandButton1_Click()

    ActiveSheet.Range("$B$1:$E$3000").AutoFilter Field:=1, Criteria1:=TextBox1.Value

    ActiveSheet.Range("$B$1:$E$3000").AutoFilter Field:=2, Criteria1:=TextBox2.Value

    ActiveSheet.Range("$B$1:$E$3000").AutoFilter Field:=3, Criteria1:=TextBox3.Value

    ActiveSheet.Range("$B$1:$E$3000").AutoFilter Field:=4, Criteria1:=TextBox4.Value

    Range("A1:E3001").Select

    Selection.Copy

    Sheets("Foglio2").Select

    Range("A1").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    Sheets("Foglio1").Select

    Application.CutCopyMode = False

    ActiveSheet.ShowAllData

    Range("A2").Select

    Sheets("Foglio1").Select

    Range("A2").Select

    Unload Me

End Sub

Ovviamente avrete capito che sono una schiappa in VB, e mi arrangio con registratore ...

Ringrazio anticipatamente a chiunque possa aiutarmi e auguro una buona giornata a tutti.

Ciao

Antonio

Microsoft 365 e Office | Installare, riscattare, attivare | Per la casa | Altro

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2009-09-17T14:06:48+00:00

Antonio, ho preparato un semplice foglio di esempio che puoi scaricare da qui:

http://www2.msoutlook.it/files/FiltroConCopia.xls

che contiene un foglio di partenza con l'elenco dei dati completo, una zona nella quale inserire il dati del filtro, ed un pulsante associato ad una macro.

La macro non fa altro che creare un nuovo foglio di lavoro e lanciare il filtro automatico facendo una copia dei dati (ed ovviamente basandosi sulla tabella con i valori di filtro).

Prova a darci un'occhiata...

Se non fosse necessario creare un nuovo foglio tutto il codice necessario si limiterebbe ad una sola riga, quella in cui viene invocato il filtro avanzato.

Ciao

Roberto

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2009-09-17T13:26:59+00:00

Ciao Antonio.

Visto che l'obiettivo è quello di generare une esportazione di dati in altro foglio io utilizzerei le funzionalità del Filtro Avanzato di Excel che permette in maniera nativa ti estrarre una copia dei dati che soddisfano certi requisiti. Il filtro avanzato richiede che sia definita una zona del foglio adibita a raccogliere i dati di filtro (anzichè le textbox usi normali celle del foglio, ovviamente predisposte e strutturate in maniera opportuna).

Questa soluzione oltre ad essere più veloce in termini di esecuzione è anche più semplice da manutenere e realizzare. Prova a dare un'occhiata all'help in linea per quanto riguarda il filtro avanzato, così prendi confidenza con lo strumento.

Ciao

Roberto

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2009-09-19T21:05:55+00:00

    ho visto l'esempio e devo dire che và più che bene, poi faccio un pò di prove e vedo di adattare al meglio al mio file.

    Ovviamente il mio è un esempio e può essere un punto di partenza per personalizzare ulteriormente la tua soluzione.

    Nessuno ti impedisce di raccogliere le informazioni relative al filtro attraverso una UserForm e poi trasferire i dati su un foglio, magari nascosto, o in una zona apposita dello stesso foglio, o meglio ancora sul foglio di destinazione (così dove avrai i risultati potresti avere anche una tabella di riferimento per rammentare i parametri utilizzati). Il mio obiettivo era principalmente quello di mostrare come l'uso del filtro avanzato ti può risparmiare la scrittura di parecchio codice. :-)

    Ciao

    Roberto

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2009-09-19T12:11:42+00:00

    Ciao Roberto e scusa se ti rispondo solo ora ma sono stato impegnato, ho visto l'esempio e devo dire che và più che bene, poi faccio un pò di prove e vedo di adattare al meglio al mio file.

    Grazie infinite per l'aiuto e buona domenica.

    Ciao

    Antonio

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2009-09-17T13:39:51+00:00

    Ciao Roberto, da celle avevo già fatto, difatti la macro era nata impostando criteri in 4 celle diverse, poi avevo cercato di adattare volendo gestire tramite una userform; dato che il file finale non lo utilizzo io, volevo semplificare il più possibile, quindi escluderei il filtro avanzato, a meno che non si possa ricavare una macro, ora provo con registratore cosa viene fuori. Per ora grazie del consiglio, ti faccio sapere se sono riuscito.

    Ciao

    Antonio

    La risposta è stata utile?

    0 commenti Nessun commento