Listview içinde veri bulma

Katılım
15 Haziran 2007
Mesajlar
115
Excel Vers. ve Dili
2003 Türkçe
Merhaba,

Userform içinde aşağıdaki gibi bir kodum var, TextBox2' ye yazdığım veriyi listView içinde bulup satırı işaretliyor. burda bir sorun yok.
Fakat yapmak istediğim, bulunan satır Listview içinde en üste gelsin ve diğer benzer isimler alt, alta gelsin istiyorum.
not : kodlar İngilizce bir siteden

Private Sub TextBox2_Change()
ListView1.Sorted = True ' ListView sıralanacak
ListView1.SortKey = 3 ' 3. kolona göre ListView sıralanıyor
End Sub

Private Sub CmdBul_Click()
Dim lvwItm As ListItem
Dim itm As Integer
Dim SubItm As Integer
Dim Srchx As String
Set lvwItm = ListView1.FindItem(TextBox2.Text, , , lvwPartial)
If lvwItm Is Nothing Then
itm = 0: SubItm = 0
For itm = 1 To ListView1.ListItems.Count
For SubItm = 3 To 3 ' 3. kolonda arama yapacak
Srchx = Left(ListView1.ListItems.Item(itm).ListSubItems.Item(SubItm).Text, Len(TextBox2.Text))
If UCase(Srchx) = UCase(TextBox2.Text) Then
Set lvwItm = ListView1.ListItems.Item(itm)
GoTo out01
End If
Next SubItm
Next itm
MsgBox " Kayıt bulunamadı !!", , "KAYIT"
TextBox2.Value = ""
Exit Sub
out01:
lvwItm.EnsureVisible
lvwItm.Selected = True ' ListView da satırı buldu
ListView1.SetFocus ' ListView e geçiyor
Else
lvwItm.EnsureVisible
lvwItm.Selected = True
ListView1.SetFocus
End If
End Sub

Saygımla,
Tansu
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Dosyanızı eklermisiniz.
 
Katılım
15 Haziran 2007
Mesajlar
115
Excel Vers. ve Dili
2003 Türkçe
Merhaba Levent Bey,
Dosyam ektedir.
Yardımlarınız için teşekkürler.
Saygımla,
Tansu
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Yukarıdaki kodu aşağıdaki ile değiştirerek denermisiniz.

Kod:
Private Sub CmdBul_Click()
Dim lvwItm As ListItem
Dim itm As Integer
Dim SubItm As Integer
Dim Srchx As String
Set lvwItm = ListView1.FindItem(TextBox2.Text, , , lvwPartial)
If lvwItm Is Nothing Then
itm = 0: SubItm = 0
For itm = 1 To ListView1.ListItems.Count
 For SubItm = 1 To 3
  Srchx = Left(ListView1.ListItems.Item(itm).ListSubItems.Item(SubItm).Text, Len(TextBox2.Text))
   If UCase(Srchx) = UCase(TextBox2.Text) Then
    Set lvwItm = ListView1.ListItems.Item(itm)
    GoTo out01
   End If
   Label1 = itm
 Next SubItm
Next itm
MsgBox "    Kayıt bulunamadı !!", , "KAYIT"
TextBox2.Value = ""
Exit Sub
out01:
say = ListView1.ListItems.Count
If lvwItm.Index + 18 < say Then
ListView1.ListItems(lvwItm.Index + 18).EnsureVisible
Else
ListView1.ListItems(say).EnsureVisible
End If
lvwItm.Selected = True
ListView1.SetFocus
End If
End Sub
 
Katılım
15 Haziran 2007
Mesajlar
115
Excel Vers. ve Dili
2003 Türkçe
G&#252;nayd&#305;n Levent Bey,
kodlaman&#305;z &#231;al&#305;&#351;&#305;yor, &#231;ok te&#351;ekk&#252;r ederim.
y&#305;llar &#246;nce DOS kullan&#305;rken, Quick basic ile program yazard&#305;m, &#351;u index olay&#305; o zamanlarda da hep derdim olmu&#351;tu!!.
Tekrar te&#351;ekk&#252;rler,
Tansu
 
Üst