valore combobox come filtro
Hai un problema con Excel? 
valore combobox come filtro
di gagen (utente non iscritto) data: 01/04/2013 15:09:11
Auguri a tutti voi!
ho bisogno di aiuto come al solito!
nel codice sotto realizzato sempre con voi, posso inserire un valore in una delle 2 tbox e fare la ricerca che mi serve, con il risultato di copiare i dati nel foglio ricerca e di popolare il rowsource della cb3
devo evolvere il tutto, vincolando il risultato della ricerca copiato nel foglio, alle sole righe colonna G del foglio ricerca che contengono il valore scelto nella cb1 della userform
in sintesi è come se dopo la ricerca utilizzassi nel foglio ricerca il filtro dati.
La cb3 deve popolarsi dei soli valori filtrati
grazie mille
Private Sub CommandButton1_Click()
Dim N1 As String, n2 As String
Dim Ro As Integer
Set shr = Worksheets("ricerca")
Set sha = Worksheets("archivio")
Application.ScreenUpdating = False
On Error Resume Next
N1 = TextBox1.Text
n2 = TextBox2.Text
Ro = 2
shr.Activate
shr.Range("A2:V3000").ClearContents
If TextBox2 <> "" And TextBox1 <> "" Then
MsgBox ("ATTENZIONE SCEGLIRE SOLO UN NOME")
Exit Sub
Else
For Each c In sha.Range("E:E")
If c.Value = "" Then Exit For
If c.Value = N1 Then
Range(c.Offset(0, -4), c.Offset(0, 17)).Copy
shr.Cells(Ro, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Ro = Ro + 1
End If
Next c
End If
For Each d In sha.Range("F:F")
If d.Value = "" Then Exit For
If d.Value = n2 Then
Range(d.Offset(0, -5), d.Offset(0, 16)).Copy
shr.Cells(Ro, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Ro = Ro + 1
End If
Next d
shr.Cells(Ro, 1).Select
'Me.Hide
ComboBox3.RowSource = "ricerca!a2:a1500"
Exit Sub
End Sub |
Ricerca multipla
di mmc0070 (utente non iscritto) data: 01/04/2013 15:18:27
Ho creato un form di ricerca :
Regione : ______
Città : ______
Partito : _______
con una listbox dei record trovati
Su un foglio ho una grande tabella con i dati incolonnati Regione - Città - Partito
Per effettuare la ricerca di un singolo campo ho semplicemente risolto con un ciclo Do-loop:
if txtRegione.value<>"" then
Do
if txtRegione.value = cells(riga,colonna).value then
listbox.add ....
end if
loop until ... fine dati
end if
if txtCitta.value<>"" then
Do
if txtCitta.value = cells(riga,colonna).value then
.... etc
ma nel caso in cui l'utente effettua una ricerca avanzata, compilando più campi, dovrei impelegarmi con un serie If ... and ... and... then.
Potreste suggerirmi qualcosa di più semplice ?
Grazie
di Vecchio Frac data: 01/04/2013 18:04:28
@mmc0070
Non devi fare una domanda nuova in una discussione iniziata da un altro utente.
Devi aprire una discussione nuova e postare là la tua domanda.
di Vecchio Frac data: 01/04/2013 18:12:05
@gagen
cit. " devo evolvere il tutto, vincolando il risultato della ricerca copiato nel foglio, alle sole righe colonna G del foglio ricerca che contengono il valore scelto nella cb1 della userform "
---> Questo passaggio non mi è chiaro, puoi rispiegarti? cosa vuol dire vincolare il risultato della ricerca alle sole righe della colonna G? intendi una ricerca successiva? in che punto del codice valorizzi la colonna G?
di gagen (utente non iscritto) data: 01/04/2013 19:48:33
hai ragione mi spiego
il foglio "archivio" e il foglio "ricerca" sono uguali.
il codice trova una serie di righe in "archivio" e le copia nel foglio "ricerca" in base a ciò che viene inserito in una delle 2 txbox
io vorrei aggiungere una seconda condizione filtrante:
che fossero copiate in "ricerca" solo le righe che nella colonna G del foglio "archivio" riportano lo stesso valore selezionato nella combobox1 (stessa userform che contiene tutto)
se più comodo, si potrebbe far cancellare dopo l'esecuzione del codice così come è ora, dopo la copia, le righe del foglio "ricerca" , che nella colonna G non riportano il valore presente nella cbox1
spero stavolta sia chiaro
di Vecchio Frac data: 01/04/2013 20:14:22
Saresti così gentile da postare un file come è adesso, con codice e userform a corredo, con dati fittizi? se devo ricostruirmi lo scenario, mi perdo nei particolari e rischio di non ricreare la tua situazione.
di gagen (utente non iscritto) data: 01/04/2013 20:38:02
fatto
di Vecchio Frac data: 01/04/2013 21:01:13
Ok, quindi tu vuoi scegliere un nominativo dalle due textbox (cognome e nome 1 o cognome e nome 2) e dalla combobox1 ("ufficio"), quindi cercare il dato nel foglio archivio che corrisponde ai termini immessi e copiarlo in foglio ricerca.
Direi che il procedimento da seguire è analogo a quello già fatto, ma aggiungi l'operatore And durante il confronto.
Nel primo For devi legare la valutazione al contenuto della cella in E e di quella in G (che si trova due colonne a destra di E):
If c.Value = N1 And c.Offset(, 2) = ComboBox1 Then
Nel secondo For devi legare la valutazione al contenuto della cella in F e di quella in G (che si trova una colonne a destra di E):
If d.Value = n2 And d.Offset(, 1) = Combobox1 Then
Questo è il concetto, lasciando perdere le eventuali ottimizzazioni del codice.
di gagen (utente non iscritto) data: 02/04/2013 19:41:42
grande!!!
ora provo a inserire altri confronti da solo.....
magari ci risentiamo
grazie mille
Vuoi Approfondire?