• DİKKAT

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

belli günlere ait tarihleri comboboxta listeleme

  • Konbuyu başlatan Konbuyu başlatan peleryn
  • Başlangıç tarihi Başlangıç tarihi
Katılım
10 Mayıs 2009
Mesajlar
1,080
Excel Vers. ve Dili
2003 türkçe
Herkese Merhabalar;

Üç ayrı comboboxtan yıl,ay,gün seçimleri yapıyorum.Varsayalım ki şöylebir kombinasyon elimde olsun.2009,Mart,Perşembe

Bana lazım olan şu: diğer bir comboboxta bu seçimlere göre 2009,mart,perşembe günlerinin (05.03.2009,12.03.2009,19.03.2009,26.03.2009) bir listesinin oluşması gerekiyor.

Örnek bir dosya hazırladım.İlgilenecek herkese şimdiden çok teşekkür ederim.
 

Ekli dosyalar

Merhaba,

Aşağıdaki kodları kullanabilirsiniz.

Kod:
Private Sub ComboBox1_Change()
ComboBox5.Clear
End Sub

Kod:
Private Sub ComboBox2_Change()
Dim i As Long
Dim Gun As Integer, Ay As Integer
If ComboBox2.Value = "Salı" Then Gun = 2
If ComboBox2.Value = "Çarşamba" Then Gun = 3
If ComboBox2.Value = "Perşembe" Then Gun = 4
If ComboBox2.Value = "Cuma" Then Gun = 5
If ComboBox2.Value = "Cumartesi" Then Gun = 6
If Gun = 0 Then Exit Sub
ComboBox5.Clear
If ComboBox1.Value = "Ocak" Then
    Ay = 1
ElseIf ComboBox1.Value = "Şubat" Then
    Ay = 2
ElseIf ComboBox1.Value = "Mart" Then
    Ay = 3
ElseIf ComboBox1.Value = "Nisan" Then
    Ay = 4
ElseIf ComboBox1.Value = "Mayıs" Then
    Ay = 5
ElseIf ComboBox1.Value = "Haziran" Then
    Ay = 6
ElseIf ComboBox1.Value = "Temmuz" Then
    Ay = 7
ElseIf ComboBox1.Value = "Ağustos" Then
    Ay = 8
ElseIf ComboBox1.Value = "Eylül" Then
    Ay = 9
ElseIf ComboBox1.Value = "Ekim" Then
    Ay = 10
ElseIf ComboBox1.Value = "Kasım" Then
    Ay = 11
Else
    Ay = 12
End If
i = 0
    Do
        i = i + 1
        Tarih = DateSerial(ComboBox4.Value, Ay, i)
        If Weekday(Tarih, vbMonday) = Gun And Month(Tarih) = Ay Then ComboBox5.AddItem Format(Tarih, "dd.mm.yyyy")
    Loop While Month(Tarih) = Ay

End Sub

Kod:
Private Sub ComboBox4_Change()
ComboBox5.Clear
End Sub
 

Ekli dosyalar

Hocam sayfalara veri girmeden kodlarla çözülebileceğini umuyordum ve o şekilde çözümü görünce çok sevindim çok teşekkür ederim.Yalnız sizden bir ricam var:

Comboboxlarda her yeni gün,ay,yıl kriteri belirlediğimde combobox5 in içeriği temizlenip sadece o kritere uygun tarihlerin listelenmesini nasıl sağlayabiliriz?(dosyadaki haliyle her yeni kritere ait verileri üstüste comboboxa listeliyor)
 
Merhaba,

Haklısınız yukarıdaki kodları değiştirdim. Yeniden deneyiniz.
 
Necdet Hocam elinize sağlık çok güzel oldu teşekkür ediyorum.
 
Merhaba,

Çözümden ben de faydalandım,

Konuyu açtığı için sayın peleryn'e, çözümü için de sayın Necdet Yeşertener'e teşekkür ederim,

Saygılarımla.
 
Necdet hocam ve diğer hocalarım bir devam sorum var burada soruyorum ancak yeni konu açmam uygun görülürse uyarırsanız açarım.

Dosyayı düzenleyip userformda açıklama yaptım.Comboboxa en son o ayın o gününe ait tarihleri almıştık.Bu bir randevu formu tasarımı.Randevu için bir başka comboboxta saatlerim var.ve "Randevu" adında da bir sayfam.randevu için bir tarih seçtiğimde randevu saatlerimin olduğu comboboxta sadece boş olan saatlerin listelenmesi gerekiyor.

Umarım hocalarımın ilgisini çeker.İlgilenecek herkese çok teşekkür ediyorum.Öncelikle de Necdet hocama:)
 

Ekli dosyalar

Saatlerdir uğraşıyorum birisi bir yol gösterir umarım
 
Mehaba
Kod:
Private Sub ComboBox5_Change()
ComboBox3.Clear
If ComboBox5 = Empty Then Exit Sub
Set Trh = Sheets("RANDEVU").[a:a].Find(CDate(ComboBox5.Value), lookat:=xlWhole)
If Not Trh Is Nothing Then
For bos = 3 To 10
If Sheets("RANDEVU").Cells(Trh.Row, bos) = Empty Then
ComboBox3.AddItem Sheets("RANDEVU").Cells(1, bos)
End If
Next
End If
End Sub
Kolay gelsin
 
Son düzenleme:
Sayın meslan elinize sağlık baya birşeyler yapmıştım çalışıyordu ama değişik kombinasyonlar denerken debug vermeye başlamıştı.Kodarınız hızır gibi yetişti.

For bos=3 to 10 yapınca gayet güzel çalışmaya başladı.Ancak anlayamadığım birşey var..

Şu kriterleri bir denerseniz göreceksiniz 2009,ocak,salı ...06.11.2009 u seçin bu tarih sayfamda olmadığı halde randevu saatleri listeleniyor saatlerin hepsi listelense Initalizeden diyeceğim ama tam da listelenmiyor.sanki o gün varmış ve dolu saatler de varmış gibi işlem yapıyor!
 
O hatayı bende fark ettim. Düzenledim. Kodu tekrar alıp dene. Çalışıyor.
ayrıca
şu değişiliğide yaparsan iyi olur.
Kod:
Private Sub ComboBox1_Change()
ComboBox5.Clear
ComboBox2_Change
End Sub
 
[CODE' Alıntı:
Private Sub ComboBox1_Change()
ComboBox5.Clear
ComboBox2_Change
End Sub[/CODE]

Evet şimdi gayet güzel oldu.Yukardaki kodları önerirken sanırım denemeler yaparken takılmalar olduğunu siz de farkettiniz onun için önerdiniz.(yanlış anlamadıysam.Ona rağmen belli kriterler varken birini değiştirdiğimde comboboxlar güncellenmeyebiliyor.

İşin bu kısmı sizin soruma dahil olduğunuzdan önceki kısmı daha çok.yani isterseniz ilgilenmeyebilirsiniz.Gayet sade ve net çalışan kodlarınız ve ilginiz için teşekkür ederim.
 
Takip eden olursa diye dosyanın son durumunu ekliyorum.Sn Nejdet Yeşertener ve Sn Meslen'e tekrar teşekkür ediyorum.
 

Ekli dosyalar

Merhaba,

Güle güle kullanınız da şu adımı neden Nejdet yazarsınız bir türlü anlamıyorum, üstelik göre göre.

Neyse bende gereksiz gün adı yazan B sütununu çıkartayım da işlemi biraz daha kısaltayım.

Doğrudan tarihte gün adını yazdırmak varken fazladan sütun kullanmak hem gereksiz hemde zamandan kazandırır. :)

ComboBox5_Change deki döngüyü de
Kod:
For bos = 3 To10
yerine
Kod:
For bos = 2 To 9

yapınca sütun fazlalığının sorunu da çözmüş oluruz.
 

Ekli dosyalar

Hocam isim konusunda gecenin yorgunluğu ile Sn meslan'ın da sizin de isimlerinizi yanlış yazmışım elbetteki özellikle olan birşey değil.Rahatsız olmanıza sebep olduğum için özür dilerim.

Günlerle ilgili satırı günlere göre süzme ihtiyacı duyarsam diye açmıştım.Bir de görsel olarak daha düzenli görünüyor diye öyle müsriflikler yapıyorum çok zaman:)

Emek ve yardımlarınız için tekrar teşekkür ediyorum.
 
Geri
Üst