Herkese Merhabalar.Gelirler ve Giderler adında iki sayfam var bunlarda 3. sütunlardaki tarih aralığına göre listbox1 e gelirleri listbox2 ye de giderleri listeliyor fakat listelenecek veri yok sa hata veriyor.Hatayı ortadan nasıl kaldırabilirim lütfen yardımlarınızı rica ediyorum.Aşağıdaki kodu kullanıyorum. Vba bilgim yok denecek kadar az.Kodu da başka bir koddan kendime uyarladım.Teşekkürler.
Private Sub CommandButton1_Click()
If IsDate(TextBox1.Value) = False Then MsgBox "RAPOR BAŞLANGIÇ TARİHİNİ GİRMEDİNİZ !!!", vbInformation: Exit Sub
If IsDate(TextBox2.Value) = False Then MsgBox "RAPOR BİTİŞ TARİHİNİ GİRMEDİNİZ !!!", vbInformation: Exit Sub
bastarih = CDbl(CDate(TextBox1.Value))
sontarih = CDbl(CDate(TextBox2.Value))
Satir = 0
On Error Resume Next
ListBox1.RowSource = ""
ListBox1.Clear
On Error GoTo 0
ReDim veri_dizisi(1 To 22, 1 To 1000000) ' bu kod kendimize 22 sutun 65536 satır bir tablo yaratır sanki bos bir excel sayfası gibi.
With Worksheets("GELİRLER")
For i = 2 To .Cells(Rows.Count, 1).End(3).Row 'burada bizim satış tablosunun dolu satırlarının sayısını buluyoruz.
'if ile ilk satıra bakıyoruz bizim istediğimiz kritere uyuyormu. yani kayıt tatihi bizim istediğimiz satırlar arasındamı.Evet ise bir alt bolumdeki yeni tabloyu dolduracağız.
If CDate(.Cells(i, 3).Value) >= bastarih And CDate(.Cells(i, 3).Value) <= sontarih Then 'tarihlerin bakılacağı sütun
'-------------------------------------------
Satir = Satir + 1
For Sutun = 1 To 21
veri_dizisi(Sutun, Satir) = .Cells(i, Sutun).Text
Next Sutun
If IsNumeric(.Cells(i, 5)) = True Then
deg = deg + Round(.Cells(i, 5).Text, 2) * 1
End If ' tutar toplamlarını hesaplamak için
End If
'eğer satış sayfasındaki ilk satır bizim istediğimiz satır ise ilk olusturduğumuz bos tablonun ilk satırına ve sutunlarına satış sayfasındaki ilgili satırı alma işlemi yapılıyor.
'Artık bizim Veri_dizini tablomuzun 1 satır ve 21 sutunu satış tablosunun ilk satırı ve sutunları aynı oldu..
'Burda aslında sabit veriler arasında işimize yarayanları süzüp veri_dinzi tablosuna atıyoruz.
'-----------------------------------------------
Next i 'burda artık satış sayfasının 2 satırına git kriterlere uyuyorsa Veri_dizini tablosuna yaz için kodları geri gonderiyoruz taki satış sayfasındaki satırlar bitene kadar.
End With
ReDim Preserve veri_dizisi(1 To 22, 1 To Satir) 'burada tablomuza sadece istediğimiz bilgileri ekledik bos kalan satırları kaldırıp tabloyu sabitliyoruz.
ListBox1.Column = veri_dizisi 'listbox içinde bizim tabloyu gostermesi için bu kodu ekledik.
'TextBox18.Text = ListBox1.ListCount 'burda listboxta kaç tane satır varsa textboxa onu yaz dedik.
If IsDate(TextBox1.Value) = False Then MsgBox "RAPOR BAŞLANGIÇ TARİHİNİ GİRMEDİNİZ !!!", vbInformation: Exit Sub
If IsDate(TextBox2.Value) = False Then MsgBox "RAPOR BİTİŞ TARİHİNİ GİRMEDİNİZ !!!", vbInformation: Exit Sub
bastarih = CDbl(CDate(TextBox1.Value))
sontarih = CDbl(CDate(TextBox2.Value))
Satir = 0
On Error Resume Next
ListBox2.RowSource = ""
ListBox2.Clear
On Error GoTo 0
ReDim veri_dizisi(1 To 22, 1 To 1000000) ' bu kod kendimize 22 sutun 65536 satır bir tablo yaratır sanki bos bir excel sayfası gibi.
With Worksheets("GİDERLER")
For i = 2 To .Cells(Rows.Count, 1).End(3).Row 'burada bizim satış tablosunun dolu satırlarının sayısını buluyoruz.
'if ile ilk satıra bakıyoruz bizim istediğimiz kritere uyuyormu. yani kayıt tatihi bizim istediğimiz satırlar arasındamı.Evet ise bir alt bolumdeki yeni tabloyu dolduracağız.
If CDate(.Cells(i, 3).Value) >= bastarih And CDate(.Cells(i, 3).Value) <= sontarih Then 'tarihlerin bakılacağı sütun
'-------------------------------------------
Satir = Satir + 1
For Sutun = 1 To 21
veri_dizisi(Sutun, Satir) = .Cells(i, Sutun).Text
Next Sutun
If IsNumeric(.Cells(i, 5)) = True Then
deg = deg + Round(.Cells(i, 5).Text, 2) * 1
End If ' tutar toplamlarını hesaplamak için
End If
'eğer satış sayfasındaki ilk satır bizim istediğimiz satır ise ilk olusturduğumuz bos tablonun ilk satırına ve sutunlarına satış sayfasındaki ilgili satırı alma işlemi yapılıyor.
'Artık bizim Veri_dizini tablomuzun 1 satır ve 21 sutunu satış tablosunun ilk satırı ve sutunları aynı oldu..
'Burda aslında sabit veriler arasında işimize yarayanları süzüp veri_dinzi tablosuna atıyoruz.
'-----------------------------------------------
Next i 'burda artık satış sayfasının 2 satırına git kriterlere uyuyorsa Veri_dizini tablosuna yaz için kodları geri gonderiyoruz taki satış sayfasındaki satırlar bitene kadar.
End With
ReDim Preserve veri_dizisi(1 To 22, 1 To Satir) 'burada tablomuza sadece istediğimiz bilgileri ekledik bos kalan satırları kaldırıp tabloyu sabitliyoruz.
ListBox2.Column = veri_dizisi 'listbox içinde bizim tabloyu gostermesi için bu kodu ekledik.
End Sub
Private Sub CommandButton1_Click()
If IsDate(TextBox1.Value) = False Then MsgBox "RAPOR BAŞLANGIÇ TARİHİNİ GİRMEDİNİZ !!!", vbInformation: Exit Sub
If IsDate(TextBox2.Value) = False Then MsgBox "RAPOR BİTİŞ TARİHİNİ GİRMEDİNİZ !!!", vbInformation: Exit Sub
bastarih = CDbl(CDate(TextBox1.Value))
sontarih = CDbl(CDate(TextBox2.Value))
Satir = 0
On Error Resume Next
ListBox1.RowSource = ""
ListBox1.Clear
On Error GoTo 0
ReDim veri_dizisi(1 To 22, 1 To 1000000) ' bu kod kendimize 22 sutun 65536 satır bir tablo yaratır sanki bos bir excel sayfası gibi.
With Worksheets("GELİRLER")
For i = 2 To .Cells(Rows.Count, 1).End(3).Row 'burada bizim satış tablosunun dolu satırlarının sayısını buluyoruz.
'if ile ilk satıra bakıyoruz bizim istediğimiz kritere uyuyormu. yani kayıt tatihi bizim istediğimiz satırlar arasındamı.Evet ise bir alt bolumdeki yeni tabloyu dolduracağız.
If CDate(.Cells(i, 3).Value) >= bastarih And CDate(.Cells(i, 3).Value) <= sontarih Then 'tarihlerin bakılacağı sütun
'-------------------------------------------
Satir = Satir + 1
For Sutun = 1 To 21
veri_dizisi(Sutun, Satir) = .Cells(i, Sutun).Text
Next Sutun
If IsNumeric(.Cells(i, 5)) = True Then
deg = deg + Round(.Cells(i, 5).Text, 2) * 1
End If ' tutar toplamlarını hesaplamak için
End If
'eğer satış sayfasındaki ilk satır bizim istediğimiz satır ise ilk olusturduğumuz bos tablonun ilk satırına ve sutunlarına satış sayfasındaki ilgili satırı alma işlemi yapılıyor.
'Artık bizim Veri_dizini tablomuzun 1 satır ve 21 sutunu satış tablosunun ilk satırı ve sutunları aynı oldu..
'Burda aslında sabit veriler arasında işimize yarayanları süzüp veri_dinzi tablosuna atıyoruz.
'-----------------------------------------------
Next i 'burda artık satış sayfasının 2 satırına git kriterlere uyuyorsa Veri_dizini tablosuna yaz için kodları geri gonderiyoruz taki satış sayfasındaki satırlar bitene kadar.
End With
ReDim Preserve veri_dizisi(1 To 22, 1 To Satir) 'burada tablomuza sadece istediğimiz bilgileri ekledik bos kalan satırları kaldırıp tabloyu sabitliyoruz.
ListBox1.Column = veri_dizisi 'listbox içinde bizim tabloyu gostermesi için bu kodu ekledik.
'TextBox18.Text = ListBox1.ListCount 'burda listboxta kaç tane satır varsa textboxa onu yaz dedik.
If IsDate(TextBox1.Value) = False Then MsgBox "RAPOR BAŞLANGIÇ TARİHİNİ GİRMEDİNİZ !!!", vbInformation: Exit Sub
If IsDate(TextBox2.Value) = False Then MsgBox "RAPOR BİTİŞ TARİHİNİ GİRMEDİNİZ !!!", vbInformation: Exit Sub
bastarih = CDbl(CDate(TextBox1.Value))
sontarih = CDbl(CDate(TextBox2.Value))
Satir = 0
On Error Resume Next
ListBox2.RowSource = ""
ListBox2.Clear
On Error GoTo 0
ReDim veri_dizisi(1 To 22, 1 To 1000000) ' bu kod kendimize 22 sutun 65536 satır bir tablo yaratır sanki bos bir excel sayfası gibi.
With Worksheets("GİDERLER")
For i = 2 To .Cells(Rows.Count, 1).End(3).Row 'burada bizim satış tablosunun dolu satırlarının sayısını buluyoruz.
'if ile ilk satıra bakıyoruz bizim istediğimiz kritere uyuyormu. yani kayıt tatihi bizim istediğimiz satırlar arasındamı.Evet ise bir alt bolumdeki yeni tabloyu dolduracağız.
If CDate(.Cells(i, 3).Value) >= bastarih And CDate(.Cells(i, 3).Value) <= sontarih Then 'tarihlerin bakılacağı sütun
'-------------------------------------------
Satir = Satir + 1
For Sutun = 1 To 21
veri_dizisi(Sutun, Satir) = .Cells(i, Sutun).Text
Next Sutun
If IsNumeric(.Cells(i, 5)) = True Then
deg = deg + Round(.Cells(i, 5).Text, 2) * 1
End If ' tutar toplamlarını hesaplamak için
End If
'eğer satış sayfasındaki ilk satır bizim istediğimiz satır ise ilk olusturduğumuz bos tablonun ilk satırına ve sutunlarına satış sayfasındaki ilgili satırı alma işlemi yapılıyor.
'Artık bizim Veri_dizini tablomuzun 1 satır ve 21 sutunu satış tablosunun ilk satırı ve sutunları aynı oldu..
'Burda aslında sabit veriler arasında işimize yarayanları süzüp veri_dinzi tablosuna atıyoruz.
'-----------------------------------------------
Next i 'burda artık satış sayfasının 2 satırına git kriterlere uyuyorsa Veri_dizini tablosuna yaz için kodları geri gonderiyoruz taki satış sayfasındaki satırlar bitene kadar.
End With
ReDim Preserve veri_dizisi(1 To 22, 1 To Satir) 'burada tablomuza sadece istediğimiz bilgileri ekledik bos kalan satırları kaldırıp tabloyu sabitliyoruz.
ListBox2.Column = veri_dizisi 'listbox içinde bizim tabloyu gostermesi için bu kodu ekledik.
End Sub