• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

userformda google modeli tarama

Katılım
29 Ağustos 2011
Mesajlar
63
Excel Vers. ve Dili
2007
Selam arkadaşlar,

Hazırladığım formda data taraması yapıyorum. Bunun için SEARCH commondbox için aşağıdaki kodları
kullanmaktayım. Sorunum şu ki tarama tam kelimeye göre değil de google sitesindeki gibi harfleri yazdıkça taramaya başlaması şeklinde olması daha çok işime yarayacak. Bu nedenle user form üzerinde SEARCH commondbox ına ihtiyaç olmaksızın textbox a yazdığım anda taramaya başlayan bir model için aşağıdaki kodu nasıl modifiye edebilir. örnek çalışma ekte
İyi çalışmalar

Private Sub CommandButton1_Click()
'SEARCH

Dim Cnt As Long
Dim Col As Variant
Dim FirstAddx As String
Dim FoundMatch As Range
Dim LastRow As Long
Dim R As Long
Dim StartRow As Long
Dim S1 As Worksheet

Set S1 = Sheets("Sheet1")

StartRow = 2

Col = ComboBox1.ListIndex + 1
If Col = 0 Then
MsgBox "Please choose a category."
Exit Sub
End If

If TextBox1.Text = "" Then
MsgBox "Please enter a search term."
TextBox1.SetFocus
Exit Sub
End If

LastRow = S1.Cells(Rows.Count, Col).End(xlUp).Row
LastRow = IIf(LastRow < StartRow, StartRow, LastRow)

Set Rng = S1.Range(S1.Cells(2, Col), S1.Cells(LastRow, Col))

Set FoundMatch = Rng.Find(What:=TextBox1.Text, _
After:=Rng.Cells(1, 1), _
LookAt:=xlWhole, _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)

If Not FoundMatch Is Nothing Then
FirstAddx = FoundMatch.Address
ListView1.ListItems.Clear

Do
Cnt = Cnt + 1
R = FoundMatch.Row
ListView1.ListItems.Add Index:=Cnt, Text:=R
For Col = 1 To 13
Set C = S1.Cells(R, Col)
ListView1.ListItems(Cnt).ListSubItems.Add Index:=Col, Text:=C.Text
Next Col
Set FoundMatch = Rng.FindNext(FoundMatch)
Loop While FoundMatch.Address <> FirstAddx And Not FoundMatch Is Nothing
SearchRecords = Cnt
Else
ListView1.ListItems.Clear
SearchRecords = 0
MsgBox "No match found for " & TextBox1.Text
End If

End Sub

Private Sub UserForm_Activate()
Dim C As Long
Dim I As Long
Dim R As Long
Dim S1 As Worksheet

Set S1 = Sheets("Sheet1")

ListView1.View = lvwReport
ListView1.HideSelection = False
ListView1.FullRowSelect = True
ListView1.HotTracking = True
ListView1.HoverSelection = False

ListView1.ColumnHeaders.Add Text:="Row", Width:=64

For C = 1 To 13
ListView1.ColumnHeaders.Add Text:=S1.Cells(1, C).Text
ComboBox1.AddItem S1.Cells(1, C).Text
Next C

'For R = 2 To 21
' ListView1.ListItems.Add Index:=R - 1, Text:=Str(R)
' For C = 1 To 13
' ListView1.ListItems(R - 1).ListSubItems.Add Index:=C, Text:=Cells(R, C).Text
' Next C
'Next R

End Sub
 

Ekli dosyalar

Son düzenleme:
Kodun

Kod:
LookAt:=xlWhole, _
yukarıdaki bölümü aşağıdaki ile değiştirin

Kod:
LookAt:=xlPart, _

birde bu kodu userform4 ün en sonuna ekleyin

Kod:
Private Sub TextBox1_Change()
CommandButton1_Click
End Sub
 
Hocam çok teşekkür ederim. Hocam bir sorum daha olacak, arama penceresindeki kelimelerde harfler silinince aşağıdaki arama verilerinin (listview) de otomatik silinmesi ve en son ekranda aranacak kelime kalmadığında aşağıdaki alanında boşalması için clear ifadesini nereye koyabiliriz
 
Merhaba,

Kod bloğunuzda aşağıdaki satırı bulun.

Kod:
ListView1.ListItems.Clear

Daha sonra bu satırı seçip kes komutu ile aşağıdaki satırın bir üstüne yapıştırın.

Kod:
If TextBox1.Text = "" Then
 
Teşekkürler hocam...Bu konu hakkında son sorum olsun... bu örnekte ayrı sayfalardaki verileri aynı formda search etmek için bir combobox ekleyip içine tarama yapmak istediğim sayfa isimlerini yazıp işaretlediğimde bu sayfada search yapmak istiyorum...yukarda belittğim kodda nasıl bir değişiklik yapmalıyım acaba. Örnek çalışma ekte
 

Ekli dosyalar

Merhaba,

Kodlarınızın içinde aşağıdaki satırı bulup silin.

Kod:
Set S1 = Sheets("Sheet1")

Yerine aşağıdaki satırları uygulayın.

Kod:
If ComboBox2 = "" Then
  MsgBox "Lütfen arama yapacağınız sayfayı seçiniz."
  ComboBox1.SetFocus
  Exit Sub
End If
 
Set S1 = Sheets(ComboBox2.Text)
 
Teşekkürler hocam ancak bir sorun var...sheet (combobox2) değiştirdiğimde kategori isimleri (combobox1) maalesef değişmiyor...iki sayfa arasında farklı başlıkta kategoriler olduğu için bu sorundan dolayı ilgili kategoriyi seçip search yapamıyorum. Sorun ne olabilir ki acaba
 
Merhaba,

Ekteki örnek dosyayı inceleyiniz.
 

Ekli dosyalar

Hocam teşekkür ederim ama "Method or data member not found" uyarısı alıyorum. VBA da Listview1 işaretleniyor.
 
Merhaba,

Örnek dosyadaki ListView1 nesnesini silip yeniden oluşturup deneyin. Versiyon sorunu yaşıyor olabilirsiniz.
 
Merhaba,

Dosyaya listelenen kayıtları başka excel dosyasına aktarma özelliği eklenmiştir. #9 nolu mesajımdaki dosyayı güncelledim.
 
Hocam dediğiniz gibi listview nesnesini silip tekrar ekledim ancak aşağıdaki resimde bulunan kodda şöyle bir hata işaretlemesi yapılıyor
 

Ekli dosyalar

  • kod.jpg
    kod.jpg
    25 KB · Görüntüleme: 16
Merhaba,

Bu sorunları bazen bende yaşıyorum. Bahsedilen satırı silip tekrar deneyin. Gerekiyorsa o satırları silip tekrar yazın.
 
Buda alternatif dosya olsun
 

Ekli dosyalar

Halit hocam,
Deneme.xls dosyasındaki örnek çalışmaya baktım çok kullanışlı gerçekten işimi görecek elinize sağlık ancak Listview1 üzerindeki yeşil arama alanlarına taranacak kelimeyi yazdığımda bazen tarama yapıyo bazen yapmıyor...acaba ben mi yanlış bişeyler yapıyorum yada tarama yapmak için biryerleri mi işaretlemem gerekiyor çözemedim tam olarak. Bu konuda yardımcı olabilirseniz sevinirim
 
Halit hocam,
Deneme.xls dosyasındaki örnek çalışmaya baktım çok kullanışlı gerçekten işimi görecek elinize sağlık ancak Listview1 üzerindeki yeşil arama alanlarına taranacak kelimeyi yazdığımda bazen tarama yapıyo bazen yapmıyor...acaba ben mi yanlış bişeyler yapıyorum yada tarama yapmak için biryerleri mi işaretlemem gerekiyor çözemedim tam olarak. Bu konuda yardımcı olabilirseniz sevinirim

Taramanın yapıla bilmesi için userformu sayfadaki komut düğmesinden çalıştırmalısınız.

Diğer taraftan kodların bulunduğu userformun içinden çalıştırırsanız arama işlemi yapmıyacaktır.
 
Aslında sizin sayfanızdan Userform, modül ve class modüllerini export yapıp kendi sayfama aktardım...diğer taraftan benim formlarımı e sheet lerimi de sizin dosyanıza aktardım...yani ikisini de denemiş oldum...bu aktarmalardan dolayı bir uyumsuzluk yaşanabilir mi acaba... sheet isimleri ve sütun isimleri formda görünüyo veriler de aktarılıyor bu anlamda bir sorun olmadı, ama arama yaptığımda belirttiğim sorunla karşılaştım. Formlar dosyalar arası export yapıldığından kaynaklı uyumlu çalışması için kodlarda değişiklik yapmam gerekir mi acaba
 
Geri
Üst