• DİKKAT

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

Listview da bul komutu

Bakigemlik

Altın Üye
Katılım
16 Ocak 2013
Mesajlar
674
Excel Vers. ve Dili
2010 Türkçe
Arkadaşlar Merhaba,

Ek dosyada Kontrol butonuyla açılan listview da Bul komutunu 2 gündür araştırmama rağmen ne yazık ki yapamadım konu hakkında desteğinizi rica ederim,

Yapılacak işlem Kontrol UserForm'unda Plaka textbox ına plaka yazdığımda,listview da plakaları listelemesi tarih seçtiğimde tarihe göre listview listelenmesini en sonda içeren metir ara textbox yazdığım metine göre listview ı listelemesini istiyorum,

Konu hakkında desteğinizi rica eder şimdiden teşekkürlerimi sunarım,

Dosya yüklü olduğundan siteye yükleyemedim aşağıdaki linkt te mevcut,

http://s8.dosya.tc/server/zuiakm/lastik_takip.rar.html

Saygılarımla,
 
Merhaba
Aşağıdaki kodları denermisiniz?
"Bitiş tarihi" nin hangi sütunda olduğu belli değil aşağıda "p=?" kaçıncı sütunsa; sütun numarasını yazıp tırnakları kaldırırsınız.
http://s8.dosya.tc/server/r7nz2b/liste.zip.html
DEĞİŞİM TARİHİ......................"textbox1"
BİTİŞ TARİHİ ...................."textbox2"
PLAKA.................................."textbox3"
'DÖNEM................................"textbox4"
İÇEREN METİN......................."textbox5"

Kod:
Private p
    
Private Sub TextBox1_Change()
    p = 1
    TopluTextBox TextBox1
End Sub
  
Private Sub TextBox2_Change()
[COLOR="Blue"] '////    p = [COLOR="Red"]?[/COLOR]
'///    TopluTextBox TextBox2[/COLOR]
End Sub
   
Private Sub TextBox3_Change()
    p = 3
    TopluTextBox TextBox3
End Sub
      
Private Sub TextBox4_Change()
     p = 2
    TopluTextBox TextBox4
End Sub
  
Private Sub TextBox5_Change()
p = "A:N"
TopluTextBox TextBox5
End Sub

Private Sub TopluTextBox(metin As MSForms.Control)
On Error Resume Next
Dim bul As Range
ListView1.ListItems.Clear
Set bul = Columns(p).Find(metin & "*")
If Not bul Is Nothing Then
    Application.EnableEvents = False
    fg = bul.Address
    Do
If LCase(bul) Like LCase(metin & "*") Then
ListView1.ListItems.Add , , Cells(bul.Row, "A").Value
y = ListView1.ListItems.Count
For n = 2 To 14
 ListView1.ListItems(y).ListSubItems.Add , , Cells(bul.Row, n).Value
Next
End If
 Set bul = Columns(p).FindNext(bul)
    Loop While Not bul Is Nothing And bul.Address <> fg
    Application.EnableEvents = True
End If
End Sub
 
Son düzenleme:
Sayın Plint emeğiniz ve desteğiniz için teşekkürler,

Bitiş tarihini yanlış söylemişim size Başlangıç ve bitiş tarihini seçince o iki tarih arasındaki verileri versin istiyorum,

Birde Listview daki veriler tarihe göre otomatik sıralama yapmamız mümkün mü,

Teşekkürler,
 
Sayın Plint emeğiniz ve desteğiniz için teşekkürler,
Bitiş tarihini yanlış söylemişim size Başlangıç ve bitiş tarihini seçince o iki tarih arasındaki verileri versin istiyorum,
Birde Listview daki veriler tarihe göre otomatik sıralama yapmamız mümkün mü,
Teşekkürler
,
Merhaba
Başlangıç ve bitiş tarihi; bulunan "Plaka no" ya bağımlı olarakmı? yoksa
bulunan "Plaka no"lar gözardı edilip sayfadanmı alınacak? Belirtmemişsiniz
ama sayfadan olduğunu varsayarak aşağıdaki dosyayı deneyin.
http://s8.dosya.tc/server/xz6mgn/liste3.zip.html
Kod:
[SIZE="2"]Private p
'DEĞİŞİM TARİHİ......................
Private Sub TextBox1_Change()
TextBox2 = ""
Dim bul As Range
If TextBox1 <> "" And IsDate(TextBox1.Value) = True Then
ListView1.ListItems.Clear
v = Cells(Rows.Count, 1).End(3).Row
m = Format$(TextBox1, "dd.mm.yyyy")
For Each bul In Range("a2:a" & v)
m2 = Format$(bul.Value, "dd.mm.yyyy")
If CDate(m2) >= CDate(m) Then
ListView1.ListItems.Add , , Cells(bul.Row, "A").Value
y = ListView1.ListItems.Count
For n = 2 To 14
ListView1.ListItems(y).ListSubItems.Add , , Cells(bul.Row, n).Value
Next: End If: Next:
End If
End Sub
'DEĞİŞİM TARİHİ......................
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call sırala
End Sub

 'BİTİŞ TARİHİ......................
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim bul As Range
If TextBox2 <> "" And IsDate(TextBox2.Value) = True Then
ListView1.ListItems.Clear
v = Cells(Rows.Count, 1).End(3).Row
m = Format$(TextBox2, "dd.mm.yyyy")
m1 = Format$(TextBox1, "dd.mm.yyyy")
For Each bul In Range("a2:a" & v)
m2 = Format$(bul.Value, "dd.mm.yyyy")
If CDate(m2) <= CDate(m) And CDate(m1) <= CDate(m2) Then
ListView1.ListItems.Add , , Cells(bul.Row, "A").Value
y = ListView1.ListItems.Count
For n = 2 To 14
ListView1.ListItems(y).ListSubItems.Add , , Cells(bul.Row, n).Value
Next: End If: Next:
Else
If IsDate(TextBox2.Value) = False Then MsgBox "BİTİŞ TARİHİNDE SORUN VAR"
Me.TextBox2.SetFocus
End If
End Sub

     'PLAKA..................................
Private Sub TextBox3_Change()
p = 3
TopluTextBox TextBox3
End Sub
     'PLAKA..................................
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call sırala
End Sub

       'DÖNEM................................
Private Sub TextBox4_Change()
     p = 2
    TopluTextBox TextBox4
End Sub
      'DÖNEM................................
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call sırala
End Sub
   'İÇEREN METİN.......................
Private Sub TextBox5_Change()
p = "A:N"
TopluTextBox TextBox5
End Sub
Private Sub TopluTextBox(metin As MSForms.Control)
On Error Resume Next
Dim bul As Range
ListView1.ListItems.Clear
Set bul = Columns(p).Find(metin & "*")
If Not bul Is Nothing Then
    Application.EnableEvents = False
    fg = bul.Address
    Do
    If bul.Row <> 1 Then
If LCase(bul) Like LCase(metin & "*") Then
ListView1.ListItems.Add , , Cells(bul.Row, "A").Value
y = ListView1.ListItems.Count
For n = 2 To 14
 ListView1.ListItems(y).ListSubItems.Add , , Cells(bul.Row, n).Value
Next
End If
End If
 Set bul = Columns(p).FindNext(bul)
    Loop While Not bul Is Nothing And bul.Address <> fg
    Application.EnableEvents = True
End If
End Sub
Sub sırala()
For a1 = 1 To ListView1.ListItems.Count
If IsDate(ListView1.ListItems(a1).Text) = True Then
trh = CDate(ListView1.ListItems(a1).Text)
ListView1.ListItems(a1).Text = CDbl(trh)
End If
Next
  With ListView1
        .SortOrder = lvwAscending
        .SortKey = 0
        .Sorted = True
 End With
 For a1 = 1 To ListView1.ListItems.Count
If IsNumeric(ListView1.ListItems(a1).Text) = True Then
trh = CDate(ListView1.ListItems(a1).Text)
ListView1.ListItems(a1).Text = Format(trh, "dd.mmmm.yyyy")
End If
Next
 ListView1.Sorted = False
End Sub



Sub UserForm_Initialize()
With ListView1
    .View = lvwReport  'ListView de buna dikkat etmeliyiz, Eğer ListWiev de burayı lvwReport olarak ayarlamazsak diğer yapılan işlemler listemizde gözükmeyecektir.
     .ColumnHeaders.Add , , "DEĞİŞİM TARİHİ ", 80
     .ColumnHeaders.Add , , "DÖNEM  ", 50
     .ColumnHeaders.Add , , "PLAKA ", 50
     .ColumnHeaders.Add , , "ARAÇ TİPİ ", 50
     .ColumnHeaders.Add , , "DEĞİŞİM KM ", 60
     .ColumnHeaders.Add , , "MARKA ", 40
     .ColumnHeaders.Add , , "LSTK DESENİ ", 100
     .ColumnHeaders.Add , , "KM GARANTİ DESEN MODELİ ", 110
     .ColumnHeaders.Add , , "LASTİK GARANTİ DURUMU ", 110
     .ColumnHeaders.Add , , "TAKILAN LASTİK ", 100
     .ColumnHeaders.Add , , "TUTAR ", 60
     .ColumnHeaders.Add , , "SON KM ", 60
     .ColumnHeaders.Add , , "KALAN GARANTİ KM  ", 90
     .ColumnHeaders.Add , , "LASTİK DİŞ DERİNLİĞİ ", 100
   .FullRowSelect = True 'liste elemanını seçtiğinizde tüm satır seçili olur.
   .Gridlines = True 'Listeyi çizgili yapar.
End With

End Sub [/SIZE]
 
Son düzenleme:
Merhaba,

Dosyanın son hali ekte dosya ile ilgili son bir desteğinize ihtiyacım var,

Destek olan arkadaşlara şimdiden teşekkürler,

* Userform3 de tarihe göre arama yapınca kod hata veriyor nedenini bulamadım,ayrıca tüm kriterler yazıldığında bu kriterlere göre listview listelemesi mümkün mü, Seçilen Alandaki TextBoxlar ya da Combobox seçiliyse bunlara göre listview sıralansın istiyorum

* Sayfaya aktar butonuna basınca Listview de listelenen verileri Rapor sayfasına aktara bilir mi,

Dosya yüklü olduğu için siteye yükleyemedim,

Desteğiniz için tekrar teşekkürler,

http://www.dosya.tc/server6/yqpe31/lastik_takip.rar.html
 
Merhaba
Eski dosyaya sütun ekledikten sonra yaptığınız düzeltmelerde eksiklikler olmuş,
ek dosyayı inceleyiniz.
http://s6.dosya.tc/server5/5p181f/lastik.zip.html
(Kodların çalışmasında ağırlık olursa sıralama kodlarını "Change" içinden "Exit" içine taşırsınız)
Kod:
 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call sırala
End Sub
 
Sayın PLINT geç geri dönüşüm için kusura bakmayın rahatsızdım inceleyip dönüş yapamadım,

Desteğiniz için teşekkürler,
 
Sayın Plınt merhaba kodları kendi dosyama kopyaladım ama aşağıdaki hatayı verdi ve UserForm3 açmıyor,

Run-Time Error 70
Permission denied.

Tekrar Teşekkürler,
 
Sayın Plınt merhaba kodları kendi dosyama kopyaladım ama aşağıdaki hatayı verdi ve UserForm3 açmıyor,

Run-Time Error 70
Permission denied.

Tekrar Teşekkürler,

Merhaba
Öncelikle geçmiş olsun.
Sizin kodlarınıza "Userform3" açılışında; "Combobox" a "A" sütunundaki
verilerden benzersizleri alması için yaptığım ekleme den dolayı olmalı,

"Userform3" \"Combobox1" "properties" ten "Row Source"i kontrol edin
dolu ise boşaltın veya uğraşmayın "combobox1" sağ tıkla silip (Delete) yenisini
oluşturun.
Yani sorun "Combobox1" "properties" te yapılan bir değişiklik gibi görünüyor.
Eklediğim bölüm aşağıdaki kırmızı kısım onunda açılışta bir zararı olmaz.
Kod:
 Sub UserForm_Initialize()
[COLOR="Red"]For a = 2 To Cells(Rows.Count, 1).End(3).Row
If WorksheetFunction.CountIf(Range("a2:a" & a), Cells(a, 1).Value) = 1 Then _
ComboBox1.AddItem Cells(a, 1).Value
Next[/COLOR]
With ListView1
    .View = lvwReport  'ListView de buna dikkat etmeliyiz, Eğer ListWiev de burayı lvwReport olarak ayarlamazsak diğer yapılan işlemler listemizde gözükmeyecektir.
     .ColumnHeaders.Add , , "YAPILAN İŞLEM ", 80
     .ColumnHeaders.Add , , "DEĞİŞİM TARİHİ ", 80
     .ColumnHeaders.Add , , "DÖNEM  ", 50 
'.....
'......
 
Çok teşekkürler sayın PLINT row source boşaltarak sorun halloldu,

Emeğini ve sabrınız için tekrar teşekkürler,
 
Sayın Plınt bilgi amaçlı soruyorum, Row source seçeneğini ben Userformlarımda kullanıyorum bunu kullanmanın dosyaya herhangi bir zararı var mı Row Source seçeneğinden başka daha kolay bir çözüm var mıdır,

Birde mesela Userform1 de tarih seçeneğinde açılır takvim yapamadığımdan burada da row source kullanmak zorunda kaldım, bunun içinde açılır takvim için kısa yol varmıdır,

Teşekkürler,

Saygılarımla,
 
Sayın Plınt bilgi amaçlı soruyorum, Row source seçeneğini ben Userformlarımda kullanıyorum bunu kullanmanın dosyaya herhangi bir zararı var mı Row Source seçeneğinden başka daha kolay bir çözüm var mıdır,

Dosyaya zararı olmazda,yukarıdaki gibi kodlarla veri eklemelerde sıkıntı oluşuyor
Birde mesela Userform1 de tarih seçeneğinde açılır takvim yapamadığımdan burada da row source kullanmak zorunda kaldım, bunun içinde açılır takvim için kısa yol varmıdır,
"Userform" a ("system32" de "ocx" eklentisi varsa) "Calendar" ekleyebilirseniz.
aylık güncel takvimi userformda görebilirsiniz, "toolbox"ta yoksa
"properties"/"toolbox"/"Additional controls" dan arayın varsa işaretleyin
"Toolbox"ta görünecek.
Ayrıca sitede "Userforma takvim ekleme" veya "calendar" diye aratırsanız çalışmalar mevcut.
Mesela http://www.excel.web.tr/f48/userforma-acylyr-takvim-ekleme-t116521.html
 
Sayın PLINT textbox11 takvim olayını yaptım userformda çalışıyor bilgilendirme için teşekkürler,

Fakat girilen tarihe gör dönemi getirdiğim textbox4 dönem artık gelmiyor,

kod aşağıdaki gibi ama çalışmadı

desteğinizi rica ederim,

Teşekkürler,
 
Sayın PLINT textbox11 takvim olayını yaptım userformda çalışıyor bilgilendirme için teşekkürler,

Fakat girilen tarihe gör dönemi getirdiğim textbox4 dönem artık gelmiyor,

kod aşağıdaki gibi ama çalışmadı
"Aşağıdaki kod" eklememişsiniz textbox eklenmiş şekliyle dosyanızı eklerseniz
daha iyi olacaktır.
 
Geri
Üst