Excel Vba Forum - Excelce.Net
SORU ve CEVAPLAR (Yazılabilir) => Microsoft Excel, Vba, Makro, Formül vb. Soruları => Çözülen Excel, Vba, Makro, Formül vb. Soruları => Konuyu başlatan: kelkitli - 16 Ocak 2011, 09:45:51
-
Selamlar,
UserForm da TextBoxlarımız ve bir de Listview imiz var. TextBox1 e yazılan harfe göre listeleme yapmak istiyorum. Bir harf daha yazılınca yeniden. Şu kodla Listviewde arama listeleme yapıyorum. Ancak Change olayına harf girince listeleme yapamadım.
Private Sub Textbox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
' TEXTBOX İÇİNDE ARAMA YAPAR
If KeyCode <> 13 Then Exit Sub
If Trim(TextBox1.Value) = "" Then: ListeGuncelle: Exit Sub
Set Sh = Sheets("İSİM")
ara = TextBox1.Value
Set bulunacak = Sh.Range("A:A").Find(ara) 'VERİ HANGİ SÜTUNDA ARANACAK
If Not bulunacak Is Nothing Then
Adres = bulunacak.Address
ListView1.ListItems.Clear
Do
SAT = bulunacak.Row
With ListView1
.ListItems.Add , , Sh.Cells(SAT, 1)
X = X + 1
With .ListItems(X).ListSubItems
' LISTVIEW İÇİNDE SAHA FAZLA İSE İLAVE EDİN
.Add , , Sh.Cells(SAT, 2)
.Add , , Sh.Cells(SAT, 3)
.Add , , Sh.Cells(SAT, 4)
.Add , , Sh.Cells(SAT, 5)
.Add , , SAT
End With
End With
Set bulunacak = Sh.Range("A:A").FindNext(bulunacak)
Loop While Not bulunacak Is Nothing And bulunacak.Address <> Adres
Else
MsgBox "Aradığınız kritere uygun veri bulunamadı", vbCritical, "ARAMA SONUCUNDA HATA"
TextBox1.Value = ""
ListeGuncelle
End If
End Sub
-
Merhaba Necmettin Bey.
Örnek dosya üzerinde sormanız mümkün müdür?
-
Selamlar,
Dosya ektedir.
http://s3.dosya.tc/file/CsztNy/dosya.rar.html
-
Aleyküm Selam.
Textbox1'in Change olayına ait kodları aşağıdaki gibi değiştirin:
Private Sub TextBox1_Change()
TextBox1 = Evaluate("=UPPER(" & """" & TextBox1 & """" & ")")
' TEXTBOX İÇİNDE ARAMA YAPAR
'If KeyCode <> 13 Then Exit Sub
On Error Resume Next
If Trim(TextBox1.Value) = "" Then: ListeGuncelle: Exit Sub
Set Sh = Sheets("İSİM")
ara = TextBox1.Value
Set bulunacak = Sh.Range("A:A").Find(ara) 'VERİ HANGİ SÜTUNDA ARANACAK
If Not bulunacak Is Nothing Then
Adres = bulunacak.Address
ListView1.ListItems.Clear
Do
sat = bulunacak.Row
With ListView1
.ListItems.Add , , Sh.Cells(sat, 1)
X = X + 1
With .ListItems(X).ListSubItems
' LISTVIEW İÇİNDE SAHA FAZLA İSE İLAVE EDİN
.Add , , Sh.Cells(sat, 2)
.Add , , Sh.Cells(sat, 3)
.Add , , Sh.Cells(sat, 4)
.Add , , Sh.Cells(sat, 5)
.Add , , sat
End With
End With
Set bulunacak = Sh.Range("A:A").FindNext(bulunacak)
Loop While Not bulunacak Is Nothing And bulunacak.Address <> Adres
Else
MsgBox "Aradığınız kritere uygun veri bulunamadı", vbCritical, "ARAMA SONUCUNDA HATA"
TextBox1.Value = ""
ListeGuncelle
End If
If TextBox1 = "" Then ListeGuncelle
End Sub
-
Bülent Bey,
veriler çoğalınca süzmede problem oldu. Mesela A yazdığımda B ile ve daha başka harflerle başlayan isimler de listelendi.
-
İlgili komut satırını aşağıdaki gibi değiştirip dener misiniz?
Set bulunacak = Sh.Range("A:A").Find(ara & "*", LookAt:=xlWhole) 'VERİ HANGİ SÜTUNDA ARANACAK
-
Teşekkürler Üstad,
ellerine sağlık.
-
Üstad sonradan şöyle bir olumsuzluk farkettim. Harfe göre listeleme yapıyor ama listviewden çift tıklayıp textboxlara veri almak isteyince sadece textbox1 e veri alıyor.
-
Değerli Dostlar Selamlar,
Sorunu çözdüm. kodlar Change olayında yazılı olduğundan, listviewe tıklayıp verileri textboxlara alınca cange olayı yeniden aktif oluyor ve sonuç alınamıyordu. KeyUp kısmına yazınca sorun düzeldi.
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
' TEXTBOX İÇİNDE ARAMA YAPAR
'If KeyCode <> 13 Then Exit Sub
On Error Resume Next
If Trim(TextBox1.Value) = "" Then: ListeGuncelle: Exit Sub
Set Sh = Sheets("İSİM")
ara = TextBox1.Value
Set bulunacak = Sh.Range("A:A").Find(ara & "*", LookAt:=xlWhole) 'VERİ HANGİ SÜTUNDA ARANACAK
If Not bulunacak Is Nothing Then
Adres = bulunacak.Address
ListView1.ListItems.Clear
Do
sat = bulunacak.Row
With ListView1
.ListItems.Add , , Sh.Cells(sat, 1)
X = X + 1
With .ListItems(X).ListSubItems
' LISTVIEW İÇİNDE SAHA FAZLA İSE İLAVE EDİN
.Add , , Sh.Cells(sat, 2)
.Add , , Sh.Cells(sat, 3)
.Add , , Sh.Cells(sat, 4)
.Add , , Sh.Cells(sat, 5)
.Add , , sat
End With
End With
Set bulunacak = Sh.Range("A:A").FindNext(bulunacak)
Loop While Not bulunacak Is Nothing And bulunacak.Address <> Adres
Else
'MsgBox "Aradığınız kritere uygun veri bulunamadı", vbCritical, "ARAMA SONUCUNDA HATA"
'TextBox1.Value = ""
ListeGuncelle
End If
[/color][/color]