Cautare in list
-
- Mesaje: 286
- Membru din: Mar Ian 19, 2010 7:36 pm
- Localitate: Bucuresti
Cautare in list
Salutare,
Cum pot sa caut mai usor in list , tastand doar prima litera dintr-un cuvant, si sa apara cuvintele incepand cu litera respectiva?
Multumesc.
Cum pot sa caut mai usor in list , tastand doar prima litera dintr-un cuvant, si sa apara cuvintele incepand cu litera respectiva?
Multumesc.
Re: Cautare in list
Daca te referi la o lista de tip Data Validation, atunci nu poti face acest lucru.
-
- Mesaje: 286
- Membru din: Mar Ian 19, 2010 7:36 pm
- Localitate: Bucuresti
Re: Cautare in list
Multumesc pt. raspuns.
Nasol .
Nasol .
-
- Moderator
- Mesaje: 4570
- Membru din: Vin Iul 31, 2009 7:32 am
Re: Cautare in list
Dar ca sa nu fii cimplet dezamagit pot sa-ti spun ca se poate face "ceva"... dar nu in data validation.
Mai exact in fisierul atasat ai un exemplu de cautare incrementala, rezultatul fiind intors in celula activa (codul nu este foarte optimizat pentru ca e facut "ad-hoc"... ).
Cum functioneaza - in zona D1:D4 colorata si cu galben vor fi datele din lista de cautat, iar "fereastra de cautare" se activeaza in exemplul atasat la combinatia CTRL+I (se poate modifica cu ce vrei tu) si apare urmatoare fereatra:
Pe masura ce tastezi textul de cautat in texboxul "cauta textul", lista de valori se va restrange cu valorile care corespund cautarii, apoi cu tastele sageti te poti deplasa in lista, lar la apasarea tastei ENTER valoarea selectata va fi introdusa in celula activa.
Textul din spatele codului este dupa cum urmeaza:
1. in UserForm1:
Iar in Module1 unde este partea de incarcare lista si macroul de "activare cautare incrementala":
Sper sa-ti foloseasca...
L.E.: NOTA: Vedeti ca mai "incolo" gasiti o versiune actualizata si mai generica de cautare incrementala - versiunea initiala a ramas aici doar pentru "referinte"...
Mai exact in fisierul atasat ai un exemplu de cautare incrementala, rezultatul fiind intors in celula activa (codul nu este foarte optimizat pentru ca e facut "ad-hoc"... ).
Cum functioneaza - in zona D1:D4 colorata si cu galben vor fi datele din lista de cautat, iar "fereastra de cautare" se activeaza in exemplul atasat la combinatia CTRL+I (se poate modifica cu ce vrei tu) si apare urmatoare fereatra:
Pe masura ce tastezi textul de cautat in texboxul "cauta textul", lista de valori se va restrange cu valorile care corespund cautarii, apoi cu tastele sageti te poti deplasa in lista, lar la apasarea tastei ENTER valoarea selectata va fi introdusa in celula activa.
Textul din spatele codului este dupa cum urmeaza:
1. in UserForm1:
Cod: Selectaţi tot
Private Sub cmdLoadList_Click()
LoadList
End Sub
Private Sub cmdExit_Click()
UserForm1.Hide
End Sub
Private Sub ListBox1_Click()
UserForm1.Label1.Caption = UserForm1.ListBox1.Value
End Sub
Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then
'MsgBox "Selected: " & UserForm1.ListBox1.Value
ActiveCell.Value = UserForm1.ListBox1.Value
UserForm1.Hide
End If
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
UserForm1.ListBox1.Clear
For Each oneString In myCollection
If UCase(Mid(oneString, 1, Len(Me.TextBox1.Value))) = UCase(TextBox1.Value) Then
UserForm1.ListBox1.AddItem oneString
End If
Next oneString
UserForm1.ListBox1.SetFocus
UserForm1.TextBox1.SetFocus
End Sub
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = vbEnter Then
MsgBox "Enter"
End If
End Sub
Cod: Selectaţi tot
Public myCollection As New Collection
Sub LoadList()
Dim oneCell As Range
Dim oneString As Variant
For Each oneCell In Range(Range("d1"), Range("d10").End(xlUp))
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
Sub IncrementalSearch()
LoadList
UserForm1.TextBox1.Value = ""
UserForm1.TextBox1.SetFocus
UserForm1.Show
End Sub
L.E.: NOTA: Vedeti ca mai "incolo" gasiti o versiune actualizata si mai generica de cautare incrementala - versiunea initiala a ramas aici doar pentru "referinte"...
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Ultima oară modificat Mar Aug 17, 2010 6:14 pm de către Anonymous, modificat de 2 ori în total.
Motiv: Adaugare notificare pentru versiunea mai noua
Motiv: Adaugare notificare pentru versiunea mai noua
-
- Mesaje: 286
- Membru din: Mar Ian 19, 2010 7:36 pm
- Localitate: Bucuresti
Re: Cautare in list
Esti tare .
Daca vrei, poti sa-mi spui 2 cuv. despre acesta "cautare incrementala".
Multumesc.
Daca vrei, poti sa-mi spui 2 cuv. despre acesta "cautare incrementala".
Multumesc.
-
- Mesaje: 286
- Membru din: Mar Ian 19, 2010 7:36 pm
- Localitate: Bucuresti
Re: Cautare in list
Poate sa inlocuiasca un list din data validation, si sa fie si dinamica?
-
- Moderator
- Mesaje: 4570
- Membru din: Vin Iul 31, 2009 7:32 am
Re: Cautare in list
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...
La ce anume te referi cand spui ca vrei ca lista sa sa fie "dinamica"?... lista se incarca in baza unui range, care poate fi si unul "denumit" iar modificarile in lista se preiau imediat, sau mai exact la urmatoarea apelare a ferestrei asa ca si din punctul asta poate fi considerata o "lista dinamica".
Daca o vrei si mai dinamica, in sensul ca ai mai multe coloane cu Data Validation dar cu liste diferite, cred ca se poate modifica functia sa detecteze din ce range se face data validation pentru a incarca acel range...
Totul depinde de ce anume vrei sa faci mai exact... cum vrei sa o folosesti...
La ce anume te referi cand spui ca vrei ca lista sa sa fie "dinamica"?... lista se incarca in baza unui range, care poate fi si unul "denumit" iar modificarile in lista se preiau imediat, sau mai exact la urmatoarea apelare a ferestrei asa ca si din punctul asta poate fi considerata o "lista dinamica".
Daca o vrei si mai dinamica, in sensul ca ai mai multe coloane cu Data Validation dar cu liste diferite, cred ca se poate modifica functia sa detecteze din ce range se face data validation pentru a incarca acel range...
Totul depinde de ce anume vrei sa faci mai exact... cum vrei sa o folosesti...
- cristi_lazarro
- Mesaje: 841
- Membru din: Mie Noi 04, 2009 5:57 pm
Re: Cautare in list
in 2007 cu ce combinatie de taste se activeaza fereastra?
-
- Moderator
- Mesaje: 4570
- Membru din: Vin Iul 31, 2009 7:32 am
Re: Cautare in list
Pai asa cum scrie si mai sus - in exemplul meu se activeaza cu CTRL+I to poti sa atasezi macroul la ce combinatie vrei...cristi_lazarro scrie:in 2007 cu ce combinatie de taste se activeaza fereastra?
- cristi_lazarro
- Mesaje: 841
- Membru din: Mie Noi 04, 2009 5:57 pm
Re: Cautare in list
nu ma refer la macro-uri ci, la fereastra in care trebuie sa-mi introduc lista
cred ca de ceva nu ma prind.........asa e?
cred ca de ceva nu ma prind.........asa e?