• DİKKAT

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

Combobox ile Listboxta tarih listeleme

Katılım
19 Haziran 2007
Mesajlar
418
Excel Vers. ve Dili
excel 2007
Merhaba arkadaşlar.
Ekteki dosyamda U:U aralığındaki tarihleri combobox ile süzmek istiyorum.
Örnek bir dosyadan aldığım kodları uyarlama konusunda başarısız oluyorum.
Alttaki Combobox için düzenlemeye çalıştığım kodlarım. Birde Initialize oalyında kodlar vadı. Onları değiştirmeden ekliyorum. Acaba Listbox1 de U:U araığını nasıl süzebilirim?

Kod:
    Private Sub ComboBox12_Change()
    ListBox1.Clear
    Dim say As Integer
    Dim i As Integer
    say = WorksheetFunction.CountA(satış.Range("U:U"))
    s = 0
    For i = 1 To say
       If Range("U" & i) = ComboBox1.Value Then
          ListBox1.AddItem Sayfa1.Range("U" & i) & "      " & satış.Range("A:V" & i)
          s = s + satış.Range("A:V" & i)
       End If
    Next i
    End Sub

Initialize kodları ise;
Kod:
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
Range("A:A").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
Range("A1").Select
Dim say As Integer
Dim i As Integer
say = WorksheetFunction.CountA(Sayfa1.Range("A:A"))
For i = 1 To say
If Sayfa1.Range("A" & i).Value = Sayfa1.Range("A" & i).Offset(1, 0).Value Then
Sayfa1.Range("C" & i).Value = "E"
Else
Sayfa1.Range("C" & i).Value = "H"
End If
Next i
For i = 1 To say
If Sayfa1.Range("C" & i).Value = "H" Then
ComboBox1.AddItem Sayfa1.Range("A" & i)
End If
Next i
Sayfa1.Range("C:C").ClearContents
Range("A1").Select
Application.ScreenUpdating = True
End Sub
 

Ekli dosyalar

Arkadaşlar bu konuda bir çözüm mümkün değil mi?
Kendi initializedeki kodlarım da şu şekilde:

Kod:
Private Sub UserForm_Initialize()

    Label28.Caption = "Günü Geçen " & Evaluate("=COUNTIF(U:U,""<""&TODAY())") & " Sayısı"
    Label30.Caption = "Bugün " & Evaluate("=COUNTIF(U:U,TODAY())") & " Sayısı"
    
   
    CommandButton3.Enabled = False
    CommandButton6.Enabled = False
    CommandButton16.Enabled = False
    ToggleButton2.Enabled = False
    
    'For s = 2 To Range("A65536").End(3).Row
    'If Cells(s, "A") < VBA.Date Then
    'ListBox1.AddItem Cells.SpecialCells(xlCellTypeAllFormatConditions).Item(s, 1)
    'End If
    'Next s
    
Set liste = Me.ListBox1
Module5.interval1 = 50
Module5.Timer1baslat Me.Caption


    Call clasa_ekle
    Sheets("satış").Select
    ComboBox1.Style = 2
    ComboBox2.Style = 2
    ComboBox3.Style = 2
    ComboBox4.Style = 2
    ComboBox5.Style = 2
    ComboBox6.Style = 2
    ComboBox7.Style = 2
    ComboBox8.Style = 2
    ComboBox9.Style = 2
    ComboBox10.Style = 2
    ComboBox10.Style = 2
 
    Dim sat As Long
    
    sat = Sheets("parametreler").Cells(Rows.Count, "A").End(xlUp).Row
    ComboBox3.ShowDropButtonWhen = 0
    ComboBox3.RowSource = "parametreler!A2:A" & sat
    ComboBox3.Value = "TL"
    
    sat = Sheets("parametreler").Cells(Rows.Count, "B").End(xlUp).Row
    ComboBox4.ShowDropButtonWhen = 0
    ComboBox4.RowSource = "parametreler!B2:B" & sat
    ComboBox4.Value = "NK"
    
    sat = Sheets("parametreler").Cells(Rows.Count, "C").End(xlUp).Row
    ComboBox5.ShowDropButtonWhen = 0
    ComboBox5.RowSource = "parametreler!C2:C" & sat
    ComboBox5.Value = "PP"
    
    sat = Sheets("parametreler").Cells(Rows.Count, "D").End(xlUp).Row
    ComboBox6.ShowDropButtonWhen = 0
    ComboBox6.RowSource = "parametreler!D2:D" & sat
    ComboBox6.Value = "3"
    
    sat = Sheets("parametreler").Cells(Rows.Count, "E").End(xlUp).Row
    ComboBox7.ShowDropButtonWhen = 0
    ComboBox7.RowSource = "parametreler!E2:E" & sat
    ComboBox7.Value = "D"
    
    sat = Sheets("parametreler").Cells(Rows.Count, "F").End(xlUp).Row
    ComboBox8.ShowDropButtonWhen = 0
    ComboBox8.RowSource = "parametreler!F2:F" & sat
    ComboBox8.Value = "H"
    
    sat = Sheets("parametreler").Cells(Rows.Count, "G").End(xlUp).Row
    ComboBox9.ShowDropButtonWhen = 0
    ComboBox9.RowSource = "parametreler!G2:G" & sat
    ComboBox9.Value = "H"
    
    sat = Sheets("parametreler").Cells(Rows.Count, "H").End(xlUp).Row
    ComboBox10.ShowDropButtonWhen = 0
    ComboBox10.RowSource = "parametreler!H2:H" & sat
    ComboBox10.Value = "HAKİKİ ŞİFA"
    
    sat = Sheets("parametreler").Cells(Rows.Count, "I").End(xlUp).Row
    ComboBox11.ShowDropButtonWhen = 0
    ComboBox11.RowSource = "parametreler!I2:I" & sat
    ComboBox11.Value = "1"
    
    Sheets("satış").Select
    TextBox1.Value = Format(Date, "dd.mm.yyyy")
    
        TextBox13 = "-KİŞİ ARA-"
        TextBox14 = "-İL ARA-"
        TextBox15 = "-TELEFON ARA-"
        TextBox16.Text = "İlk Tarih"
        TextBox17.Text = "Son Tarih"
''''''''''''''''''''''' ilave ''''''''''''''''''''''''''
    sat = Cells(Rows.Count, "A").End(xlUp).Row
    sut = Cells(1, Columns.Count).End(xlToLeft).Column
        With ListBox1
        .ColumnCount = sut 'kolon sayısı
        For i = 1 To sut
            deg = deg & CLng(Columns(i).Width) & ";"
        Next i
        .ColumnWidths = deg
        .RowSource = "Satış!A2:V" & sat 'veri aralığı
        .ColumnHeads = True
      
    End With
ComboBox1.RowSource = "ililçe!g2: g" & [ililçe!g65536].End(3).Row
TextBox18.Text = ListBox1.ListCount
TextBox19 = Format(WorksheetFunction.Sum(Range("I2:I65000")), "#,##0.00")

Dim x As Integer
    For x = 1 To 3
        StatusBar1.Panels.Add
    Next x
    With StatusBar1.Panels
        .Item(1).Style = sbrDate
        .Item(2).Style = sbrTime
        .Item(3).Text = "HAKİKİ ŞİFA"
    End With
End Sub
 
Son düzenleme:
Siz bu kadar şey yapmışsınız.Çok ta güzel.Emeğinize sağlık.
Bence siz VB.Net e geçmelisiniz diye düşünüyorum.
 
Siz bu kadar şey yapmışsınız.Çok ta güzel.Emeğinize sağlık.
Bence siz VB.Net e geçmelisiniz diye düşünüyorum.

Merhaba.
Emeğime değil de emeği geçenlere teşekkür etmek gerek. Kod anlamında pek bir bilgim yok. Sormak ve araştırmak sureti ile çalışmam bu noktaya geldi. VB.NET'e geçmelisiniz ifadenizden bir anlam çıkaramadım ama... :)
 
Merhaba.
Emeğime değil de emeği geçenlere teşekkür etmek gerek. Kod anlamında pek bir bilgim yok. Sormak ve araştırmak sureti ile çalışmam bu noktaya geldi. VB.NET'e geçmelisiniz ifadenizden bir anlam çıkaramadım ama... :)

sizi tebrik ederim. çalışmayı çok beğendiğimi belirtmek isterim.
 
Merhaba,

Öncelikle "tmp" isminde sayfa ekleyin. Aşağıdaki kodu bir butona ekleyip çalıştırıp deneyin.

Not: "21", U sütunudur.
Kod:
'temizle
Sheets("tmp").Cells.Delete

'parametre verin
Sheets("satış").Range("a1:u1").AutoFilter 21, ">=01.06.2012", xlAnd, "<=30.06.2012"
        
'görünen hücreleri kopyala ve "tmp" sayfasına yapıştır
Sheets("satış").Range("a1:u10000").SpecialCells(xlCellTypeVisible).Copy Sheets("tmp").[a1]

'tmp sayfasındaki satırları listeye yükle
ListBox1.RowSource = Sheets("tmp").Range("a1:u" & Sheets("tmp").[a65536].End(3).Row)
 
Merhaba,

Öncelikle "tmp" isminde sayfa ekleyin. Aşağıdaki kodu bir butona ekleyip çalıştırıp deneyin.

Not: "21", U sütunudur.
Kod:
'temizle
Sheets("tmp").Cells.Delete

'parametre verin
Sheets("satış").Range("a1:u1").AutoFilter 21, ">=01.06.2012", xlAnd, "<=30.06.2012"
        
'görünen hücreleri kopyala ve "tmp" sayfasına yapıştır
Sheets("satış").Range("a1:u10000").SpecialCells(xlCellTypeVisible).Copy Sheets("tmp").[a1]

'tmp sayfasındaki satırları listeye yükle
ListBox1.RowSource = Sheets("tmp").Range("a1:u" & Sheets("tmp").[a65536].End(3).Row)

Merhaba Zeki Bey. Alakanız için çok teşekkür ederim.
Aşağıdaki satır hata verdi?

'tmp sayfasındaki satırları listeye yükle
ListBox1.RowSource = Sheets("tmp").Range("a1:u" & Sheets("tmp").[a65536].End(3).Row)
 
"Address" özelliğini eklemeyi unutmuşum... Tam referans ile aşağıdaki gibi kullanın.

Kod:
ListBox1.RowSource = "tmp!" & Sheets("tmp").Range("a1:u" & _
    Sheets("tmp").[a65536].End(3).Row).Address
 
Merhaba Zeki Bey.
Son verdiğiniz kodu, iş yoğunlundan ancak uygulayabildim. Bu sebeple de ancak cevap verebiliyorum.

Ben kendimi tam ifade edemedim sanırım ki, verdiğiniz kodlar sadece U satırında olanları listeliyor.
İhtiyacıma cevap vermiyor. Bu kodlara ihtiyacım olacağını düşünerek, arşivime alıyorum. Bir de buna bağlı olarak kodlarınızı texboxtan referans alarak düzenlememk mümkün mü? Çünkü ben de farklı bir ufuk açmış oldu. Bir texboxa girdiğim değeri o satırda listelemek istediğim konular var...

Ekteki dosyamda bana yardımcı olursanız çok sevinirim. buradaki dosyada, satış ekranında bir combobox var. Burada bir takım kodlar ile (Murat Osma Beyefendi sağolsun) listelemeyi başardım. Ama listeden tıklama yaptığımda hata alıyorum.

Combobox kodlarım:
Kod:
Private Sub ComboBox12_Change()
ListBox1.RowSource = Empty
ListBox1.Clear
ListBox1.ColumnCount = sut

For Each isim In Worksheets("satış").Range("U2:U" & WorksheetFunction.CountA(Worksheets("satış").Range("U2:U65536")) + 1)
    If UCase(LCase(isim)) Like UCase(LCase(Cbsutun1)) & "*" Then
         liste = ListBox1.ListCount
            ListBox1.AddItem
            ListBox1.List(liste, 0) = isim
            ListBox1.List(liste, 1) = isim.Offset(0, 1)
            ListBox1.List(liste, 2) = isim.Offset(0, 2)
            ListBox1.List(liste, 3) = isim.Offset(0, 3)
            ListBox1.List(liste, 4) = isim.Offset(0, 4)
            ListBox1.List(liste, 5) = isim.Offset(0, 5)
            ListBox1.List(liste, 6) = isim.Offset(0, 6)
            ListBox1.List(liste, 7) = isim.Offset(0, 7)
            ListBox1.List(liste, 8) = isim.Offset(0, 8)
            ListBox1.List(liste, 9) = isim.Offset(0, 9)
            ListBox1.List(liste, 10) = isim.Offset(0, 10)
            ListBox1.List(liste, 11) = isim.Offset(0, 11)
            ListBox1.List(liste, 12) = isim.Offset(0, 12)
            ListBox1.List(liste, 13) = isim.Offset(0, 13)
            ListBox1.List(liste, 14) = isim.Offset(0, 14)
            ListBox1.List(liste, 15) = isim.Offset(0, 15)
            ListBox1.List(liste, 16) = isim.Offset(0, 16)
            ListBox1.List(liste, 17) = isim.Offset(0, 17)
            ListBox1.List(liste, 18) = isim.Offset(0, 18)
            ListBox1.List(liste, 19) = isim.Offset(0, 19)
            ListBox1.List(liste, 20) = isim.Offset(0, 20)
            ListBox1.List(liste, 21) = isim.Offset(0, 21)
     End If
Next
End Sub

Initializedeki eklediğim kodlar:
Kod:
    Dim m As Integer
    For m = 1 To Range("u65536").End(3).Row
    If WorksheetFunction.CountIf(Range("u2:u" & m), Cells(m, "u")) = 1 Then
    ComboBox12.AddItem Format(Cells(m, "U"), "dd.mm.yyyy")
    End If
    Next m
 

Ekli dosyalar

Tekrar merhaba;

İçine tarih yazdığınız combonun adı "Cbsutun1" olması gerekiyor. Veya "Cbsutun1" yazan kısmı "Combobox12" olarak değiştirin.

Yalnız kullandığınız bu metot, verileriniz çoğaldığında listeleme işlemini oldukça yavaşlatacaktır.
 
Merhaba Zeki bey.
Anladım... Sanırım bu detayı gözden kaçırdım. Üzerinde uğraşmadan evvel önerebileceğiniz bir yöntem var mı? Şu an 8000 satırdan oluşan veri sayfam var. Bu her gün artıyor. Ancak mantık olarak yapmak istediğim bu şekilde. Bu kısmı nasıl daha kullanışlı hale getirebiliriz veya sizin önerdiğiniz kodlar daha uygunsa bir önceki mesajımda ifade etmeye çalıştığım şekliyle texboxtan referans alacak şekilde düzenleyebilir miyiz?
 
merhaba Zeki Bey.
Verdiğiniz linkte biraz inceleme yaptım. Şu an benim içinden çıkabileceğim bir durum değil. Gerek ADO gerekse DAO uygulamanıza baktım...
Bir de Cbsutun1 olanyeri Combobox olarak değiştirdim. Lakin yine aynı hatayı aldım. Acaba sorun nedir? Ben VBA dilinden pek anlamıyorum.
 
Sabah tekrar konuya göz attım. ComboBoxlarımdaki verilerimi aşağıdaki gibi değiştirdim. Hata almıyorum lakin listeleme de yapamıyorum? Yardımcı olabilir misiniz?

Kod:
Private Sub ComboBox12_Change()
ListBox1.RowSource = Empty
ListBox1.Clear
ListBox1.ColumnCount = sut

For Each isim In Worksheets("satış").Range("U2:U" & WorksheetFunction.CountA(Worksheets("satış").Range("U2:U65536")) + 1)
    If UCase(LCase(isim)) Like UCase(LCase(ComboBox12)) & "*" Then
         If ListBox1.ListIndex < 0 Then Exit Sub
            TextBox1.Text = ListBox1.Column(0)
            TextBox1.Value = Format(TextBox1, "dd.mm.yyyy")
            TextBox2.Text = ListBox1.Column(1)
            TextBox3.Text = ListBox1.Column(2)
            TextBox4.Text = ListBox1.Column(3)
            ComboBox1.Text = ListBox1.Column(4)
            ComboBox2.Text = ListBox1.Column(5)
            TextBox5.Text = ListBox1.Column(6)
            TextBox6.Text = ListBox1.Column(7)
            TextBox7.Text = ListBox1.Column(8)
            ComboBox3.Text = ListBox1.Column(9)
            ComboBox4.Text = ListBox1.Column(10)
            TextBox8.Text = ListBox1.Column(11)
            ComboBox5.Text = ListBox1.Column(12)
            ComboBox6.Text = ListBox1.Column(13)
            ComboBox7.Text = ListBox1.Column(14)
            ComboBox8.Text = ListBox1.Column(15)
            ComboBox9.Text = ListBox1.Column(16)
            ComboBox10.Text = ListBox1.Column(17)
            ComboBox11.Text = ListBox1.Column(18)
            TextBox9.Text = ListBox1.Column(19)
            TextBox10.Text = ListBox1.Column(20)

     End If
Next
End Sub
 
Geri
Üst