Cautare in list
Re: Cautare in list
Lucian a creat lista in Sheet1 (cea cu fundal Galben).
In codul macro a facut referire la acel range: For Each oneCell In Range(Range("d1"), Range("d10")
Poti sa iti faci o lista separata, dar va trebui sa intrii in VBE si sa modific range-ul.
In codul macro a facut referire la acel range: For Each oneCell In Range(Range("d1"), Range("d10")
Poti sa iti faci o lista separata, dar va trebui sa intrii in VBE si sa modific range-ul.
- cristi_lazarro
- Mesaje: 841
- Membru din: Mie Noi 04, 2009 5:57 pm
Re: Cautare in list
pai lista mea tre sa fie undeva ascunsa iar eu trebuie sa o pot apela in ce pagina vreau. si acel macro sa ma ajute sa introduc mai rapid o valoare din lista, fara a o cauta eu la pozitia corespunzatoare ci, sa o caute in fct de prima litera.
eu nu inteleg unde imi creez acea lista ascunsa
eu nu inteleg unde imi creez acea lista ascunsa
-
- Moderator
- Mesaje: 4570
- Membru din: Vin Iul 31, 2009 7:32 am
Re: Cautare in list
Lista o pui unde vrei tu.. .chiar si intr-o foaie ascunsa... si atunci exact ca si in cazul "Data Validation" pentru liste din alte foi trebuie folosit un NamedRange.
Astfel in codul VBA poate fi inlocuita linia
cu asta:
Si cum spuneam aceasta FORMA de "cautare incrementala" poate fi folosita pentru a DUBLA un Data Validation nu pentru inlocuirea lui...
Astfel in codul VBA poate fi inlocuita linia
Cod: Selectaţi tot
For Each oneCell In Range(Range("d1"), Range("d10").End(xlUp))
Cod: Selectaţi tot
For Each oneCell In Range("rngOptiuni")
-
- Mesaje: 190
- Membru din: Mar Mar 23, 2010 7:02 pm
Re: Cautare in list
Utilizez aceasta "Cautare Incrementala" si este super ok.
Va rog, daca este posibil, sa dezvoltati un pic codul VBA pentru a putea face si urmatorul lucru:
La momentul cand esti, de exemplu, pozitionat pe o celula din range-ul "Destinatie1" sa se incarce cu CTRL I lista din range-ul "Sursa1", cand esti pe o celula din "Destinatie2" sa se incarce lista din "Sursa2" s.a.m.d.
Multumesc!
Cu respect,
Va rog, daca este posibil, sa dezvoltati un pic codul VBA pentru a putea face si urmatorul lucru:
La momentul cand esti, de exemplu, pozitionat pe o celula din range-ul "Destinatie1" sa se incarce cu CTRL I lista din range-ul "Sursa1", cand esti pe o celula din "Destinatie2" sa se incarce lista din "Sursa2" s.a.m.d.
Multumesc!
Cu respect,
-
- Moderator
- Mesaje: 4570
- Membru din: Vin Iul 31, 2009 7:32 am
Re: Cautare in list
"Pronto!"... sau "Presto!"?...
Ia vezi daca fisierul atasat este ok... nu este un cod foarte optimizat, dar cred ca important este in primul rand sa-si faca treaba...
Acum la combinatia "magica" CTRL+I, codul mai intai face "detactarea" daca in celula respectiva exista Data Validation de tip Lista si apoi incarca datele din range-ul definit acolo - indiferent daca este "named range" dau definit prin "referinte" (de ex. $A$1:$A$10) - cum de altfel am si lasat in zona "albastra" din exemplul atasat sa ia doar 2 randuri din cele 3 ale range-ului...
Daca in celula nu este definita Data Validation de tip List codul iese fara sa mai faca nimic...
Iar modificarile au fost "minore":
- cea mai mare parte a fost "introducerea detectiei pentru Data Validation":
dupa cum se vede doar putin in partea de inceput pentru a detecta "rangeul" si apoi modificarea functiei LoadList pentru a incarca datele din range-ul trimis ca parametru:
Asa ca acum cred ca ai o "cautare incrementala" suficient de generica... si sper sa foloseasca si altora...
Ia vezi daca fisierul atasat este ok... nu este un cod foarte optimizat, dar cred ca important este in primul rand sa-si faca treaba...
Acum la combinatia "magica" CTRL+I, codul mai intai face "detactarea" daca in celula respectiva exista Data Validation de tip Lista si apoi incarca datele din range-ul definit acolo - indiferent daca este "named range" dau definit prin "referinte" (de ex. $A$1:$A$10) - cum de altfel am si lasat in zona "albastra" din exemplul atasat sa ia doar 2 randuri din cele 3 ale range-ului...
Daca in celula nu este definita Data Validation de tip List codul iese fara sa mai faca nimic...
Iar modificarile au fost "minore":
- cea mai mare parte a fost "introducerea detectiei pentru Data Validation":
Cod: Selectaţi tot
Sub IncrementalSearch()
Set myCollection = New Collection
'detectare mod "data validation"
nDVType = 0
On Error Resume Next
nDVType = ActiveCell.Validation.Type
On Error GoTo 0
If nDVType = 3 Then '3=List
cRange = Mid(ActiveCell.Validation.Formula1, 2, Len(ActiveCell.Validation.Formula1))
If Len(cRange) > 0 Then
LoadList (cRange)
Else
myCollection.Add Item:="Celula nu foloseste data validation", key:="Celula nu foloseste data validation"
End If
Else
Exit Sub
End If
UserForm1.TextBox1.Value = ""
UserForm1.Label1.Caption = ""
UserForm1.TextBox1.SetFocus
UserForm1.Show
End Sub
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 UserForm1.ListBox1
For Each oneString In myCollection
.AddItem oneString
Next oneString
End With
End Sub
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
-
- Mesaje: 190
- Membru din: Mar Mar 23, 2010 7:02 pm
Re: Cautare in list
E parfum!
Multumesc frumos!
Cu respect,
Multumesc frumos!
Cu respect,
-
- Moderator
- Mesaje: 4570
- Membru din: Vin Iul 31, 2009 7:32 am
Re: Cautare in list
Si ca sa fie si mai frumos... iata si aceeasi versiune de fisier de mai sus (aproape) dar "ridicata" la rangul de "add-in" - adica o data adaugata in lista de Add-in-uri Excel functioneaza in ORICE foaie Excel (testata pe Excel 2003/2007).
Fata de "versiunea" anterioara apar mici imbunatatiri:
- selectia din lista (si returnarea valorii in celula activa) se poate face si cu click dublu pe elementele din lista
- valoarea selectata se returneaza si daca este ceva selectat in lista si se apasa butonul Exit
AVTERTIZARE: Pentru ca foloseste combinatia CTRL+I se va pierde functionalitatea de formatare font "Italic" folosind tastatura... asa ca daca vreti fonturi italice folosind CTRL+I nu uitati sa dezactivati acest add-in.
Fata de "versiunea" anterioara apar mici imbunatatiri:
- selectia din lista (si returnarea valorii in celula activa) se poate face si cu click dublu pe elementele din lista
- valoarea selectata se returneaza si daca este ceva selectat in lista si se apasa butonul Exit
AVTERTIZARE: Pentru ca foloseste combinatia CTRL+I se va pierde functionalitatea de formatare font "Italic" folosind tastatura... asa ca daca vreti fonturi italice folosind CTRL+I nu uitati sa dezactivati acest add-in.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: Cautare in list
sal
cum se adauga in lista de ad-in ?
cum se adauga in lista de ad-in ?
Re: Cautare in list
după ce dezarhivezi fişierul de mai sus, deschizi un fişier excel, din meniul "instrumente" alegi opţiunea "Programe de completare", se deschide fereastra "Componente incluse la cerere", apeşi tab-ul "Răsfoire" selectezi din locaţia unde ai dezarhivat mai devreme şi apoi OK.
Adică Tools - Add-Ins şi din meniul care apare apeşi pe Browse şi cauţi add-inul dorit.
Adică Tools - Add-Ins şi din meniul care apare apeşi pe Browse şi cauţi add-inul dorit.
Ultima oară modificat Mar Mar 15, 2011 12:03 pm de către Anonymous, modificat 1 dată în total.
Motiv: Adaugare text pentru versiunea în EN
Motiv: Adaugare text pentru versiunea în EN
-
- Mesaje: 7
- Membru din: Joi Sep 23, 2010 12:53 pm
Re: Cautare in list
Buna seara.
Atasez fisierul IncrementalSearch in care am modificat un pic lista.
Ce trebuie sa modific in cod asa incat cautarea sa fie si mai generala; adica daca dau cautare dupa ANA, sa imi apara ori de cate ori exista in lista ANA(eu am pus de doua ori) si sa imi arate si alta combinatie de litere in care ANA apare nu neaparat la inceputul cuvantului(de ex:MAMA ANA).
Multumesc frumos.
Atasez fisierul IncrementalSearch in care am modificat un pic lista.
Ce trebuie sa modific in cod asa incat cautarea sa fie si mai generala; adica daca dau cautare dupa ANA, sa imi apara ori de cate ori exista in lista ANA(eu am pus de doua ori) si sa imi arate si alta combinatie de litere in care ANA apare nu neaparat la inceputul cuvantului(de ex:MAMA ANA).
Multumesc frumos.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.