Textboxlara girilen tarih aralığına göre rapor almak

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,239
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selam arkadaşlar,

Userform üzerinde 2 adet textbox ve bir adet combobox var.

Textboxlara tarih giriyorum. (Calendar ile)
Comboboxta ise listelenen isimlerden seçerek veri listesi alıyorum.
Bu şekilde rapor alırken problem yaşamıyorum. Fakat Textboxlara tarih girip (Calendar ile) comboboxı boş geçtiğimde verdiğim tarih aralığını listelemeyi bir türlü sağlayamadım. Forumdan araştırdım. Aşağıdaki kodları buldum. Üzerinde değişiklik yapıp kendime uyarladım. Fakat çalıştırdığımda "UYGUN VERİ BULUNAMADI" şeklinde uyarı veriyor. Ayrıca makro kaydet yöntemi ile filtreleme yapıp kriterleri değiştirip textboxları atadım ondada çalıştırdığım zaman aynı uyarı mesajını alıyorum. Filtre değerlerine baktığımda textbox değerlerini sayı olarak algılıyor. Bunun yanında textboxların tarih formatınıda "dd.mm.yyyy" şeklinde ayarladım ama ne yaptıysam başarılı olamadım.

If ComboBox1 = "" Then
Sheets("RAPORLAR").Range("B2:H65536").ClearContents
Sheets("ZİMMET").Select
SONSATIR = Sheets("ZİMMET").Cells(65536, 2).End(xlUp).Row
Sheets("ZİMMET").Range("A1:G" & SONSATIR).AutoFilter Field:=2, Criteria1:=">=" & CLng(CDate(TextBox1.Value)) * 1, Operator:=xlAnd, Criteria2:="<=" & CLng(CDate(TextBox2.Value)) * 1
If Sheets("ZİMMET").[AA1] = 0 Then
MsgBox "Verdiğiniz kriterlere uygun kayıt bulunamadı.Lütfen daha sonra yeniden deneyin.", vbExclamation + vbOKOnly, "DİKKAT !"
Label4 = "Verdiğiniz kriterlere uygun kayıt bulunamadı. Lütfen daha sonra yeniden deneyin."
TextBox1 = ""
TextBox2 = ""
ComboBox1 = ""
TextBox1.SetFocus
Exit Sub
End If

Sheets("RAPORLAR").Range("B2:H65536").ClearContents
Sheets("ZİMMET").Select
Range("B2:G2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("RAPORLAR").Select
Range("B2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("B2").Select

Aynı kodun aşağıdaki kısmında problem yaşamıyorum nerde yanlışlık yapıyorum ??? :kafa:

Sheets("RAPORLAR").Range("B2:H65536").ClearContents
Sheets("ZİMMET").Select
SONSATIR = Sheets("ZİMMET").Cells(65536, 2).End(xlUp).Row
Sheets("ZİMMET").Range("A1:G" & SONSATIR).AutoFilter Field:=2, Criteria1:=">=" & TextBox1.Value, Operator:=xlAnd, Criteria2:="<=" & TextBox2.Value
Sheets("ZİMMET").Range("A1:G" & SONSATIR).AutoFilter Field:=4, Criteria1:=ComboBox1.Value
If Sheets("ZİMMET").[AA1] = 0 Then
MsgBox "Verdiğiniz kriterlere uygun kayıt bulunamadı.Lütfen daha sonra yeniden deneyin.", vbExclamation + vbOKOnly, "DİKKAT !"
Label4 = "Verdiğiniz kriterlere uygun kayıt bulunamadı. Lütfen daha sonra yeniden deneyin."
TextBox1 = ""
TextBox2 = ""
ComboBox1 = ""
TextBox1.SetFocus
Exit Sub
End If

Sheets("RAPORLAR").Range("B2:H65536").ClearContents
Sheets("ZİMMET").Select
Range("B2:G2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("RAPORLAR").Select
Range("B2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("B2").Select

İyi çalışmalar dilerim.
 

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
CLng(CDate(TextBox2.Value)) * 1

Yukarıdaki ifadede bulunan bire gerek yok. Sebep sayfa üzerindeki tarihlerin metin olarak algılanmasından kaynaklanıyor muhtemelen, eğer tarihler bir textboxtan sayfaya aktarıldı ise ve doğru şekilde tarih olarak tanımlanmamışsa metin olarak görünecektir. Sayfa üzerindeki tarihlerden bir kısmını el ile tekrar girerek deneyin.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,239
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selam leventm bey,

Dediğiniz gibi denediğimde raporu oluşturuyor. Fakat sonuca ulaşamadım. Dosyayı göndersem yardımcı olabilirmisiniz !!!

İyi çalışmalar dilerim. :hey:
 

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
Sorun düşündüğüm gibi, aşağıdaki satırı, bir aşağıdaki gibi değiştirerek deneyin çalışacaktır. Fakat bu çok uygun olmayan bir çözüm şeklidir. Bence sayfa üzerindeki tarihleri tarih formatına çevirin.

[vb:1:b20dd73226]Sheets("ZİMMET").Range("A1:G" & SONSATIR).AutoFilter Field:=2, Criteria1:=">=" & CLng(CDate(TextBox1.Value)) * 1, Operator:=xlAnd, Criteria2:="<=" & CLng(CDate(TextBox2.Value)) * 1
[/vb:1:b20dd73226]

yerine aşağıdaki gibi deneyin.

[vb:1:b20dd73226]Sheets("ZİMMET").Range("A1:G" & SONSATIR).AutoFilter Field:=2, Criteria1:=">=" & Cstr(TextBox1.Value), Operator:=xlAnd, Criteria2:="<=" & Cstr(TextBox2.Value)
[/vb:1:b20dd73226]
 
Üst