LİSTBOX`A KOŞULLU VERİ ALMA

Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
LÝSTBOX`A KOÞULLU VERÝ ALMA

Arkadaşlar, formda aradım ama bulamadım veya göremedim. Ekli örnek dosyayı incelerseniz, listbox`a koşullu veri almak istiyorum.

Þöyle ki;
1. soru: Combobox1 e sayfa1 de A sütununda sıralı hesap numaralarını RowSorced kullanarak getirebiliyorum. Ancak, bu numaralarla birlikte "HEPSİ" diye combobox1 açıldığında en başta yazması mümkünmü.
2.soru: Userform üzerinde ki LİSTELE bütonuna tıklayınca yine userform üzerinde bulunan OptionButtonlar yardımıyla seçilen sayfaya ait textbox1=Başlanğıç tarihi ile textbox2=Bitiş Tarihi arasında ki (bu tarihler dahil) ComboBox1 de seçilen hesap numarasının satır bilgilerini LİSTBOX da listelemek istiyorum.
3.soru: ComboBox1 de eğer mümkünse "HEPSİ" kelimesinin seçilmesi halinde ise o sayfaya ait bilgilerin tamamını LİSTBOX ta listeletmek istiyorum.
4.soru: Eğer koşul herhangi bir sayfada sağlanmıyor ise, o zaman "BULUNAMADI" diye uyarı vermesi de mümkün mü?

Bu işlemleri yapmak istememin amacı Userform üzerinde Listbox yardımıyla sayfaların koşula uyanlarının RAPORUnu almak istiyorum.

İlginize şimdiden teşekkür ederim. Saygılarımla. :hey:


Ã?rnek DOsya Ektedir.
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
merhaba,
filtre veya filtreleme diye aratırmısınz,
bu konuda birçok örnek verilmişti.
vaktim olsaydı yine de sizin örnekle ilgilenmek isterdim.
 
Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
Sayın isakarakus, malesef aradım ama bir türlü benzer örnek bulamadım. Zira benim örnek biraz farklı sanırım ondandır.
İlginiz için çok teşekkür ederim. Saygılarımla.
 
Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
:hey: Merhabalar, sayın leventm`e ait kodlar üzerinde çalışma yaparak kendi dosyama uyarlamaya çalıştığım kodlar aşağıda ama bir türlü çalıştıramadım. hata veriyor. Sanırım bir kodlama hatası yapıyorum. Lütfen bana yardımcı olurmusunuz. İlgilenen arkadaşlara şimdiden teşekkür ederim.

Private Sub OptionButton1_Click()
If ComboBox1 = "" Or TextBox1 = "" Or TextBox2 = "" Then
MsgBox "LÜTFEN VERİ BİLGİLERİNİ GİRİNİZ!", 16, "DİKKAT"
OptionButton1 = ""
ComboBox1.SetFocus
Exit Sub
End If
ListBox1.ColumnCount = 41
ListBox1.ColumnWidths = "30;60;200;80;80;80;100;100;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;220;220;220;220"
For a = 2 To Sheets("sayfa3").Cells(65536, 2).End(xlUp).Row
If Sheets("sayfa3").Cells(a, 7).Value >= TextBox1.Text And Sheets("sayfa3").Cells(a, 7).Value <= TextBox2.Text And (Sheets("sayfa3").Cells(a, 2).Value = ComboBox1.Text) Or (ComboBox1.Text = "HEPSİ") And OptionButton1.Value = True Then
c = c + 1
ListBox1.AddItem
ListBox1.List(c - 1, 0) = Sheets("sayfa3").Cells(a, 1).Value
ListBox1.List(c - 1, 1) = Sheets("sayfa3").Cells(a, 2).Value
ListBox1.List(c - 1, 2) = Sheets("sayfa3").Cells(a, 3).Value
ListBox1.List(c - 1, 3) = Sheets("sayfa3").Cells(a, 4).Value
ListBox1.List(c - 1, 4) = Sheets("sayfa3").Cells(a, 5).Value
ListBox1.List(c - 1, 5) = Sheets("sayfa3").Cells(a, 6).Value
ListBox1.List(c - 1, 6) = Sheets("sayfa3").Cells(a, 7).Value
ListBox1.List(c - 1, 7) = Sheets("sayfa3").Cells(a, 8).Value
ListBox1.List(c - 1, 8) = Sheets("sayfa3").Cells(a, 9).Value
ListBox1.List(c - 1, 9) = Sheets("sayfa3").Cells(a, 10).Value
ListBox1.List(c - 1, 10) = Sheets("sayfa3").Cells(a, 11).Value
ListBox1.List(c - 1, 11) = Sheets("sayfa3").Cells(a, 12).Value
ListBox1.List(c - 1, 12) = Sheets("sayfa3").Cells(a, 13).Value
ListBox1.List(c - 1, 13) = Sheets("sayfa3").Cells(a, 14).Value
ListBox1.List(c - 1, 14) = Sheets("sayfa3").Cells(a, 15).Value
ListBox1.List(c - 1, 15) = Sheets("sayfa3").Cells(a, 16).Value
ListBox1.List(c - 1, 16) = Sheets("sayfa3").Cells(a, 17).Value
ListBox1.List(c - 1, 17) = Sheets("sayfa3").Cells(a, 18).Value
ListBox1.List(c - 1, 18) = Sheets("sayfa3").Cells(a, 19).Value
ListBox1.List(c - 1, 19) = Sheets("sayfa3").Cells(a, 20).Value
ListBox1.List(c - 1, 20) = Sheets("sayfa3").Cells(a, 21).Value
ListBox1.List(c - 1, 21) = Sheets("sayfa3").Cells(a, 22).Value
ListBox1.List(c - 1, 22) = Sheets("sayfa3").Cells(a, 23).Value
ListBox1.List(c - 1, 23) = Sheets("sayfa3").Cells(a, 24).Value
ListBox1.List(c - 1, 24) = Sheets("sayfa3").Cells(a, 25).Value
ListBox1.List(c - 1, 25) = Sheets("sayfa3").Cells(a, 26).Value
ListBox1.List(c - 1, 26) = Sheets("sayfa3").Cells(a, 27).Value
ListBox1.List(c - 1, 27) = Sheets("sayfa3").Cells(a, 28).Value
ListBox1.List(c - 1, 28) = Sheets("sayfa3").Cells(a, 29).Value
ListBox1.List(c - 1, 29) = Sheets("sayfa3").Cells(a, 30).Value
ListBox1.List(c - 1, 30) = Sheets("sayfa3").Cells(a, 31).Value
ListBox1.List(c - 1, 31) = Sheets("sayfa3").Cells(a, 32).Value
ListBox1.List(c - 1, 32) = Sheets("sayfa3").Cells(a, 33).Value
ListBox1.List(c - 1, 33) = Sheets("sayfa3").Cells(a, 34).Value
ListBox1.List(c - 1, 34) = Sheets("sayfa3").Cells(a, 35).Value
ListBox1.List(c - 1, 35) = Sheets("sayfa3").Cells(a, 36).Value
ListBox1.List(c - 1, 36) = Sheets("sayfa3").Cells(a, 37).Value
ListBox1.List(c - 1, 37) = Sheets("sayfa3").Cells(a, 38).Value
ListBox1.List(c - 1, 38) = Sheets("sayfa3").Cells(a, 39).Value
ListBox1.List(c - 1, 39) = Sheets("sayfa3").Cells(a, 40).Value
ListBox1.List(c - 1, 40) = Sheets("sayfa3").Cells(a, 41).Value
OptionButton1 = ""
End If
Next
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Listboxa additem ile sadece 10 kolona kadar veri alabilirsiniz. Daha fazlası için rowsource kullanmak gerekir. Fakat bunuda tablodan satır atlayarak tanımlayamazsınız. Bu durumda benim bildiğim en iyi yol süzülmüş verileri başka bir sayfada sıralı olarak listeleyip, sonradan rowsource ile listboxa aktarmaktır.
 
Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
Sayın Leventm, ben bu şekilde yapmıştım ama sizin kodlarınızı görünce sizin kodlar üzerinde çalışmaya karar verdim. Daha kısa kod kullanılarak yapılacağını düşünmüştüm. Listbox`a additem ile sadece 10 kolona kadar bilgi alabileceğimizi bilmiyordum. Uyarınız ve öğretiniz için çok teşekkürler.
Aşağıdaki şekilde bir kodlama yapmıştım ve pürüzsüz çalışıyor. Ama uzun bir kodlama oldu ve doğru bir kodlama mı yaptım bilmiyorum. Görüşünüze sunuyorum. Yorumlarınızı beklerim. İlginiz için tekrar teşekkür ederim. Elinize yüreğinize sağlık. İyi ki varsınız. Saygılarımla
Private Sub OptionButton1_Click()
Sheets("sayfa3").Select
Range("AQ2:CE5000").ClearContents
a = 0
For c = 2 To 2 + WorksheetFunction.CountA(Sheets("sayfa3").Range("G2:G5000"))
If Cells(c, 7).Value >= TextBox1.Text And Cells(c, 7).Value <= TextBox2.Text And (Cells(c, 2).Value = ComboBox1.Text) Or (ComboBox1.Text = "HEPSİ") And OptionButton1.Value = True Then
Range(Cells(c, 1), Cells(c, 41)).Copy
Cells(a + 2, 43).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
a = a + 1
End If
Next c
Dim MyArr(0 To 50, 0 To 1000)
Dim i As Long
ListBox1.ColumnCount = 50
For i = 0 To 1000
MyArr(0, i) = Range("AQ" & i + 1)
MyArr(1, i) = Range("AR" & i + 1)
MyArr(2, i) = Range("AS" & i + 1)
MyArr(3, i) = Range("AT" & i + 1)
MyArr(4, i) = Range("AU" & i + 1)
MyArr(5, i) = Range("AV" & i + 1)
MyArr(6, i) = Range("AW" & i + 1)
MyArr(7, i) = Range("AX" & i + 1)
MyArr(8, i) = Range("AY" & i + 1)
MyArr(9, i) = Range("AZ" & i + 1)
MyArr(10, i) = Range("BA" & i + 1)
MyArr(11, i) = Range("BB" & i + 1)
MyArr(12, i) = Range("BC" & i + 1)
MyArr(13, i) = Range("BD" & i + 1)
MyArr(14, i) = Range("BE" & i + 1)
MyArr(15, i) = Range("BF" & i + 1)
MyArr(16, i) = Range("BG" & i + 1)
MyArr(17, i) = Range("BH" & i + 1)
MyArr(18, i) = Range("BI" & i + 1)
MyArr(19, i) = Range("BJ" & i + 1)
MyArr(20, i) = Range("BK" & i + 1)
MyArr(21, i) = Range("BL" & i + 1)
MyArr(22, i) = Range("BM" & i + 1)
MyArr(23, i) = Range("BN" & i + 1)
MyArr(24, i) = Range("BO" & i + 1)
MyArr(25, i) = Range("BP" & i + 1)
MyArr(26, i) = Range("BQ" & i + 1)
MyArr(27, i) = Range("BR" & i + 1)
MyArr(28, i) = Range("BS" & i + 1)
MyArr(29, i) = Range("BT" & i + 1)
MyArr(30, i) = Range("BU" & i + 1)
MyArr(31, i) = Range("BV" & i + 1)
MyArr(32, i) = Range("BW" & i + 1)
MyArr(33, i) = Range("BX" & i + 1)
MyArr(34, i) = Range("BY" & i + 1)
MyArr(35, i) = Range("BZ" & i + 1)
MyArr(36, i) = Range("CA" & i + 1)
MyArr(37, i) = Range("CB" & i + 1)
MyArr(38, i) = Range("CC" & i + 1)
MyArr(39, i) = Range("CD" & i + 1)
MyArr(40, i) = Range("CE" & i + 1)
Next
ListBox1.Column = MyArr
ListBox1.ColumnWidths = "30;60;200;80;80;80;100;100;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;220;220;220;220"
OptionButton1 = ""
End Sub
 
Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
uzun bir kodlama oldu ve doğru bir kodlama mı yaptım bilmiyorum
Aslında amacım süz işlemi yapmadan direkt listbox`a atabilmekti. Saygılarımla
 

Levent Menteşoğlu

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

[vb:1:cd84fe887e]Private Sub OptionButton1_Click()
Sheets("sayfa3").Select
[AQ2:CE5000].ClearContents
a = 0
For c = 2 To 2 + WorksheetFunction.CountA(Sheets("sayfa3").Range("G2:G5000"))
If Cells(c, 7).Value >= TextBox1.Text And Cells(c, 7).Value <= TextBox2.Text And (Cells(c, 2).Value = ComboBox1.Text) Or (ComboBox1.Text = "HEPSİ") And OptionButton1.Value = True Then
Range(Cells(c, 1), Cells(c, 41)).Copy
Cells(a + 2, 43).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
a = a + 1
End If
Next c
ListBox1.ColumnCount = 50
ListBox1.ColumnWidths= "30;60;200;80;80;80;100;100;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;150;220;220;220;220"
adres = "sayfa3!AQ1:CE" & a
ListBox1.RowSource = adres
OptionButton1 = ""
End Sub
[/vb:1:cd84fe887e]
 
Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
Sayın Leventm, elinize sağlık çok güzel olmuş pürüzsüz çalışıyor. Ama küçük bir sorun var. ListBox`da listelenen verilerden SADECE EN SON SATIR LİSTEDE GÃ?RÜNMÜYOR. Acaba neden kaynaklanıyordur. Selamlar.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Yukarıda benim verdiğim kod, sizin yazmış olduğunuz kodların kısaltılmış halidir. İnceleyerek kısaltmanın nasıl yapıldığını görebilirsiniz. Sorunu gidermek içinde

adres = "sayfa3!AQ1:CE" & a satırını aşağıdaki gibi değiştirin.


adres = "sayfa3!AQ1:CE" & a+1
 
Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
Sayın Leventm, her şey için çok teşekkürler. Sizlerden çok şey öğreniyoruz. Elinize yüreğinize sağlık. İyi ki varsınız. Saygılarımla
 
Üst