Cautare in list

Informatii despre cum se utilizeaza Microsoft Excel 2003. Calcule, Formule, Functii, Tabele pivot, Analiza datelor, etc
Dr.Windows
Site Admin
Site Admin
Mesaje: 4519
Membru din: Vin Iul 31, 2009 7:32 am

Re: Cautare in list

Mesaj de Dr.Windows » Mar Aug 30, 2011 4:48 pm

Deja cred ca pot sa pun subiectul la "general use code"... mai ales ca acum am ajuns la versiunea "3" :lol:

Am adaugat un buton "Oriunde in text" care acum va face cautarea nu neaparat la inceputul sirului (implicit este pe "modelul vechi"):
IncrementalSearch-InStr.jpg
Si pentru a "reactiona" corect am modificat putin Sub txtlkSearch_KeyUp mai exact am "scos" codul de acolo si l-am pus intr-o procedura separata (ca sa o pot apela si atunci cand se face click pe optiunea proaspat adaugata) asa ca a rezultat o procedura de cautare "imbunatatita" (ExecIncSearch):

Cod: Selectaţi tot

Sub ExecIncSearch()
    frmlkIncrSearch.lstlkSearchList.Clear
    
    For Each oneString In myCollection
        If frmlkIncrSearch.chkInstring.Value = False Then
            If UCase(Mid(oneString, 1, Len(frmlkIncrSearch.txtlkSearch.Value))) = UCase(frmlkIncrSearch.txtlkSearch.Value) Then
                frmlkIncrSearch.lstlkSearchList.AddItem oneString
            End If
        Else
            If InStr(UCase(oneString), UCase(frmlkIncrSearch.txtlkSearch.Value)) Then
                frmlkIncrSearch.lstlkSearchList.AddItem oneString
            End If
        End If
    Next oneString
    
    frmlkIncrSearch.lstlkSearchList.SetFocus
    frmlkIncrSearch.txtlkSearch.SetFocus

End Sub
... in care nu este nimic deosebit - ci doar o bucla IF in care se face veriicarea daca este sau nu bifata optiunea "Oriunde in text" ca sa stie cum sa caute.

Atasat este exemplul complet.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

gelu.raducanu
Mesaje: 7
Membru din: Joi Sep 23, 2010 12:53 pm

Re: Cautare in list

Mesaj de gelu.raducanu » Mar Aug 30, 2011 6:13 pm

Multumesc, este super.

Problema cu de mai multe ori in lista se poate rezolva ?(am pus B4 de mai multe ori si mi-l arata in listbox, cand caut, tot o singura data)

Dr.Windows
Site Admin
Site Admin
Mesaje: 4519
Membru din: Vin Iul 31, 2009 7:32 am

Re: Cautare in list

Mesaj de Dr.Windows » Joi Sep 01, 2011 5:06 pm

Pai in care lista l-ai pus?... pentru ca in fereastra de cautare el iti arata valorile disponibile in lista de "Data Validation" (iar acolo ar trebui sa fie o singura data pentru ca este ilogic sa repeti valorile in lista de validare) - ca si valoare in tabelul pe care tu il completezi pe baza listei de validare poate sa apara de 1000 de ori - el il ia numai din lista de validare unde este o singura data.

gelu.raducanu
Mesaje: 7
Membru din: Joi Sep 23, 2010 12:53 pm

Re: Cautare in list

Mesaj de gelu.raducanu » Lun Sep 05, 2011 7:55 pm

Corect. Stiu ca "Data Validation" asta face insa nu vreau sa folosesc "Data Validation". Vreau un cod care sa imi intoarca (in fereastra de cautare) o valoare de 5 ori daca de 5 ori e in lista.

Dr.Windows
Site Admin
Site Admin
Mesaje: 4519
Membru din: Vin Iul 31, 2009 7:32 am

Re: Cautare in list

Mesaj de Dr.Windows » Mar Sep 06, 2011 7:49 am

Atunci doar trebuie modificata functia LoadList:

Cod: Selectaţi tot

Sub LoadList(ByVal cDVRange As String)
    Dim oneCell As Range
    Dim oneString As Variant
     
    For Each oneCell In Range(cDVRange)
        On Error Resume Next
            myCollection.Add Item:=oneCell.Value, key:=oneCell.Value
        On Error GoTo 0
    Next oneCell
     
    With frmlkIncrSearch.lstlkSearchList
        For Each oneString In myCollection
            .AddItem oneString
        Next oneString
    End With

End Sub
unde trebuie sa inlocuiesti linia

Cod: Selectaţi tot

myCollection.Add Item:=oneCell.Value, key:=oneCell.Value
cu

Cod: Selectaţi tot

myCollection.Add Item:=oneCell.Value
adica "dispare" key:=oneCell.Value care asigura "unicitatea" valorii in lista.

adof
Mesaje: 445
Membru din: Mie Iul 14, 2010 12:42 pm
Localitate: Sibiu

Re: Cautare in list

Mesaj de adof » Lun Oct 24, 2011 11:13 am

cum pot apasa sageata de la lista derulantă fara mouse
ce tasta sau ce combinaţie de taste trebuie sa folosesc

Ionel T.
Mesaje: 264
Membru din: Lun Iul 25, 2011 7:05 pm
Localitate: Bucuresti-Militari-sector 6

Re: Cautare in list

Mesaj de Ionel T. » Lun Oct 24, 2011 11:17 am

Alt+sageata jos

adof
Mesaje: 445
Membru din: Mie Iul 14, 2010 12:42 pm
Localitate: Sibiu

Re: Cautare in list

Mesaj de adof » Lun Oct 24, 2011 2:40 pm

multumesc
merge
şi apoi ca sa derulez merge cu sageata fara ALT

Alyna_ct
Mesaje: 27
Membru din: Sâm Mar 10, 2012 9:57 am

Re: Cautare in list

Mesaj de Alyna_ct » Lun Apr 09, 2012 9:34 pm

Dr.Windows scrie:Sa inlocuiasca Data Validation sigur NU, asa cum a spus si Alexx, dar poate "dubla" data validation - mai exact folosit exact asa cum este modelul de mai sus poti ca pentru o celula sa ai data validation si optiunea "suplimentara" de "cautare incrementala" iar utilizatorul poate alege sa caute pana se plictiseste in lista lunga de la Data Validation sau apasa "combinatia magica" si poate cauta in ACEEASI lista putin mai repede...

Totul depinde de ce anume vrei sa faci mai exact... cum vrei sa o folosesti...
Buna seara, va rog daca se poate sa ma ajutati si pe mine sa creez aceasta " combinatie magica" pentru a selecta putin mai repede.
Mentionez ca sunt incepatoare in xls si din acest forum am invatat cate ceva

Dr.Windows
Site Admin
Site Admin
Mesaje: 4519
Membru din: Vin Iul 31, 2009 7:32 am

Re: Cautare in list

Mesaj de Dr.Windows » Mar Apr 10, 2012 1:36 pm

Pai mai rapid decat folosing varianta "ca add-in" de aici: Re: Cautare in list nu cred ca se poate - adica doar il salvezi undeva (acel fisier), il deschizi... si... gata... ;)

Sau nu am inteles eu ce "combinatie magica" vrei sa faci?... :roll:

Scrie răspuns

Înapoi la “Intrebari despre Excel 2003”