Listviewde birden fazla kritere göre süzme

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhaba Arkadaşlar

Forumda arattım ama böyle bir uygulama bulamadım. Yapmak istediğim olay şöyle: Doküman tipi ve doküman türünü seçtiğimde ilgili kriterlere uyanları listview'de listelemesini istiyorum. İlginiz için şimdiden teşekkür ederim.
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Combobox2'nin change olayına aşağıdaki kodu tanımlayıp deneyebilirsiniz.

Kod:
ListView1.ListItems.Clear
Set s2 = Sheets("DATABASE")
For b = 1 To s2.Range("a65536").End(3).Row
If s2.Cells(b, "b") = ComboBox1 And s2.Cells(b, "c") = ComboBox2 Then
ListView1.ListItems.Add , , s2.Cells(b, 1)
    For c = 2 To 10
    ListView1.ListItems(ListView1.ListItems.Count).SubItems(c - 1) = s2.Cells(b, c)
    Next c
End If
Next b
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Combobox2'nin change olayına aşağıdaki kodu tanımlayıp deneyebilirsiniz.

Kod:
ListView1.ListItems.Clear
Set s2 = Sheets("DATABASE")
For b = 1 To s2.Range("a65536").End(3).Row
If s2.Cells(b, "b") = ComboBox1 And s2.Cells(b, "c") = ComboBox2 Then
ListView1.ListItems.Add , , s2.Cells(b, 1)
    For c = 2 To 10
    ListView1.ListItems(ListView1.ListItems.Count).SubItems(c - 1) = s2.Cells(b, c)
    Next c
End If
Next b
Merhabalar dostum mesleki

yazdığın kodu kullandım, ama bu sefer aşağıdaki kodda hata veriyor. sebebi ne olabilir acaba?

Private Sub ALAN02_Change()
ALAN03.RowSource = ""
Set s1 = Sheets("DOKTIPI")
ilk = WorksheetFunction.Match(ALAN02, s1.[b:b], 0) "hatayı bu satırda veriyor. function match hatası veriyor.
son = WorksheetFunction.CountIf(s1.[b:b], ALAN02) + ilk - 1
ALAN03.RowSource = "DOKTIPI!c" & ilk & ":c" & son
End Sub
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhabalar dostum mesleki

yazdığın kodu kullandım, ama bu sefer aşağıdaki kodda hata veriyor. sebebi ne olabilir acaba?

Private Sub ALAN02_Change()
ALAN03.RowSource = ""
Set s1 = Sheets("DOKTIPI")
ilk = WorksheetFunction.Match(ALAN02, s1.[b:b], 0) "hatayı bu satırda veriyor. function match hatası veriyor.
son = WorksheetFunction.CountIf(s1.[b:b], ALAN02) + ilk - 1
ALAN03.RowSource = "DOKTIPI!c" & ilk & ":c" & son
End Sub[/QUOTE

arkadaşlar

bu konuda yardımcı olabilecek bir kişi var mı acaba?
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhabalar dostum mesleki

yazdığın kodu kullandım, ama bu sefer aşağıdaki kodda hata veriyor. sebebi ne olabilir acaba?

Private Sub ALAN02_Change()
ALAN03.RowSource = ""
Set s1 = Sheets("DOKTIPI")
ilk = WorksheetFunction.Match(ALAN02, s1.[b:b], 0) "hatayı bu satırda veriyor. function match hatası veriyor.
son = WorksheetFunction.CountIf(s1.[b:b], ALAN02) + ilk - 1
ALAN03.RowSource = "DOKTIPI!c" & ilk & ":c" & son
End Sub[/QUOTE

arkadaşlar

bu konuda yardımcı olabilecek bir kişi var mı acaba?
arkadaşlar, lütfen yardımlarınızı esirgemeyin, sayın meslekinin kodunu yazdığım zaman makronun verdiği hatayı hala çözemedim.
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025

Mahmut Bayram

Özel Üye
Katılım
25 Haziran 2005
Mesajlar
1,778
Excel Vers. ve Dili
2016 Excel Tr
ComboBox2 deki kodları şu şekilde değiştirip dener misiniz.
Kod:
For X = 2 To Cells(65536, 2).End(xlUp).Row
If WorksheetFunction.CountIf(Range("b2:b" & X), Cells(X, 2)) = 1 Then
ComboBox2.AddItem Cells(X, 2).Value
End If
Next
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
ComboBox2 deki kodları şu şekilde değiştirip dener misiniz.
Kod:
For X = 2 To Cells(65536, 2).End(xlUp).Row
If WorksheetFunction.CountIf(Range("b2:b" & X), Cells(X, 2)) = 1 Then
ComboBox2.AddItem Cells(X, 2).Value
End If
Next
sayın mahmutt

Öncelikle ilginize çok teşekkür ederim. verdiğiniz kodu çalıştırdım. Makro "Permission denied" hatası verdi ve "ComboBox2.AddItem Cells(X, 2).Value" satırı işaretledi. Bu ne anlama geliyor acaba?
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
ALAN2 şeklinde tanımladığınız alanda veri olmayınca hata verebilir. Bunun için change olaylarının hepsine on error tanımlaması yapıp deneyebilirsiniz.

Kod:
Private Sub ALAN02_Change()
[COLOR=red]on error goto 66[/COLOR]
ALAN03.RowSource = ""
Set s1 = Sheets("DOKTIPI")
ilk = WorksheetFunction.Match(ALAN02, s1.[b:b], 0) '"hatayı bu satırda veriyor. function match hatası veriyor.
son = WorksheetFunction.CountIf(s1.[b:b], ALAN02) + ilk - 1
ALAN03.RowSource = "DOKTIPI!c" & ilk & ":c" & son
[COLOR=red]66[/COLOR]
End Sub
Örnek dosya da ekledim..
 
Son düzenleme:

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
ALAN2 şeklinde tanımladığınız alanda veri olmayınca hata verebilir. Bunun için change olaylarının hepsine on error tanımlaması yapıp deneyebilirsiniz.

Kod:
Private Sub ALAN02_Change()
[COLOR=red]on error goto 66[/COLOR]
ALAN03.RowSource = ""
Set s1 = Sheets("DOKTIPI")
ilk = WorksheetFunction.Match(ALAN02, s1.[b:b], 0) '"hatayı bu satırda veriyor. function match hatası veriyor.
son = WorksheetFunction.CountIf(s1.[b:b], ALAN02) + ilk - 1
ALAN03.RowSource = "DOKTIPI!c" & ilk & ":c" & son
[COLOR=red]66[/COLOR]
End Sub
Örnek dosya da ekledim..
içimden bir ses hızırın geldi dediğinde sizin olduğunuzu tahmin etmeliydim sayın mesleki.. şaka bir yana yazdığınız kod gayet güzel çalışıyor. yalnız merak ettiğim birşey var.1. ve 2.comboboxtan seçim yaptıktan sonra liste geliyor ya, kullanıcı seçimi değiştirmek için tekrar 1.comboboxa tıkladığında sadece ilk seçilen veri comboboxta görünüyor. bu durumda ilk seçimi değiştirmek için formu kapatıp açmak gerekli, bunu formu kapatmadan nasıl yapabiliriz acaba?

Ek soru: yukarıdaki süzme işlemini işlemini yaptıktan sonra b2 hücresinde bulunan veri siliniyor. kodları inceledim ancak bu işlemi yapan kodu göremedim. neden b2 hücreindeki veri silinmiş olabilir acaba?
 
Son düzenleme:

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
içimden bir ses hızırın geldi dediğinde sizin olduğunuzu tahmin etmeliydim sayın mesleki.. şaka bir yana yazdığınız kod gayet güzel çalışıyor. yalnız merak ettiğim birşey var.1. ve 2.comboboxtan seçim yaptıktan sonra liste geliyor ya, kullanıcı seçimi değiştirmek için tekrar 1.comboboxa tıkladığında sadece ilk seçilen veri comboboxta görünüyor. bu durumda ilk seçimi değiştirmek için formu kapatıp açmak gerekli, bunu formu kapatmadan nasıl yapabiliriz acaba?

Ek soru: yukarıdaki süzme işlemini işlemini yaptıktan sonra b2 hücresinde bulunan veri siliniyor. kodları inceledim ancak bu işlemi yapan kodu göremedim. neden b2 hücreindeki veri silinmiş olabilir acaba?
arkadaşlar yardım edebilecek birisi var mı acaba?
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
arkadaşlar yardım edebilecek birisi var mı acaba?
ek soru için bilgi: formun kapanırken b2 hücresindeki veriyi sildiğini buldum. oysa ben formu kapatırken kodda böyle birşey yazmadım. kullandığım kod aşağıda.

Private Sub B12_Click()
On Error Resume Next
Unload Me
End Sub
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
ek soru için bilgi: formun kapanırken b2 hücresindeki veriyi sildiğini buldum. oysa ben formu kapatırken kodda böyle birşey yazmadım. kullandığım kod aşağıda.

Private Sub B12_Click()
On Error Resume Next
Unload Me
End Sub
2. dalya dedik bakalım cevap bulabilecekmiyiz :) masterlerim beni yalnız bırakmayın....
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
2. dalya dedik bakalım cevap bulabilecekmiyiz masterlerim (Lütfen Türkçe...)beni yalnız bırakmayın....
Sorun aşağıdaki yöntemden kaynaklanıyor. Muhtemelen Spreadsheet1 nesnesinde B2 seçili yani faal durumdadır. Bu sorunu gidermek için en basit yol, veri içermeyen bir hücreyi faal yapmaktır. Mesela initialize yönteminin başına spreadsheet1.range("z1").activate satırını ekleyebilirsiniz.

Kod:
Private Sub Spreadsheet1_SheetChange(ByVal Sh As OWC11.Worksheet, ByVal Target As OWC11.Range)
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
içimden bir ses hızırın geldi dediğinde sizin olduğunuzu tahmin etmeliydim sayın mesleki.. şaka bir yana yazdığınız kod gayet güzel çalışıyor. yalnız merak ettiğim birşey var.1. ve 2.comboboxtan seçim yaptıktan sonra liste geliyor ya, kullanıcı seçimi değiştirmek için tekrar 1.comboboxa tıkladığında sadece ilk seçilen veri comboboxta görünüyor. bu durumda ilk seçimi değiştirmek için formu kapatıp açmak gerekli, bunu formu kapatmadan nasıl yapabiliriz acaba?
sayın mesleki ilginize ve yardımlarınıza çok çok teşekkür ederim. dediğinizi uyguladım ve çalışıyor, sizlerden aldığım her yardım kod yazma işinde nelere dikkat etmem gerektiğini gösteriyor gün be gün. yalnız yukarıdaki soruma henüz kimseden bir cevap alamadım. comboboxun yukarıda söylediğim gibi çalışmasına bir örnekde bulabilmiş değilim açıkcası.bu konuyuda açıklığa kavuşturursak açmış olduğumuz bu konu combobox ve spreadsheet uygulamaları için bir örnek olacaktır sanırım.
 
Üst