Günlük sayfasından aylık sayfasına yazarken ertesi gün dolu ise hata versin

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Aşağıdaki kodalar ile günlük sayfasına yazılan verileri aylık sayfasındaki gün icmaline yazıyorum. Ancak Mesala 15/10/2007 için işlem yapılmış (ilgili satır dolu) daha sonra 14/10/2007 tarihi girilmiş (ilgili satır yine dolu ama bu kodalr o satırı güncelliyor...
örn 14/10/2007 satırının bir sonrası dolu ise işlem yapmadan uyarı verilsin
"kaptılmış günlük için işlem yapılamaz" diye yardımlarınız için teşekkürler


Kod:
Sub Aylıgayaz()
SifreAc
Set s1 = Sheets("günlük")
Set s2 = Sheets("tsb")
Set s3 = Sheets("devirler")
Set s4 = Sheets("Aylık")
For i = 5 To 800
If s4.Cells(i, 1) = s1.Cells(2, 14) Then
'-----------------------------evdevir
'12
s4.Cells(i, 2) = s2.Cells(7, 2) 'alış
s4.Cells(i, 3) = s2.Cells(8, 2) 'satış
s4.Cells(i, 4) = s2.Cells(36, 41)  'Kazanç
'2
s4.Cells(i, 5) = s2.Cells(7, 14) 'alış
s4.Cells(i, 6) = s2.Cells(8, 14) 'satış
s4.Cells(i, 7) = s2.Cells(35, 41)  'Kazanç
'24
s4.Cells(i, 8) = s2.Cells(7, 20) 'alış
s4.Cells(i, 9) = s2.Cells(8, 20) 'satış
s4.Cells(i, 10) = s2.Cells(37, 41)  'Kazanç
'45
s4.Cells(i, 11) = s2.Cells(28, 20) 'alış
s4.Cells(i, 12) = s2.Cells(29, 20) 'satış
s4.Cells(i, 13) = s2.Cells(38, 41)  'Kazanç
'kasa( YEKÜN   İSKONTA PEŞİN SAT   VERESİYE    TAHSİLAT    KASA)
s4.Cells(i, 14) = s2.Cells(31, 41) 'yekün
s4.Cells(i, 15) = s2.Cells(33, 41) 'iskonto
s4.Cells(i, 16) = s2.Cells(32, 41)  'ps
s4.Cells(i, 17) = s2.Cells(45, 29) ' vrs
s4.Cells(i, 18) = s2.Cells(44, 41) ' tah
s4.Cells(i, 19) = s2.Cells(45, 41)  'Kasa
End If
Next
SifreKapa
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
___A_______|    b   
01/10/2007 |  100
02/10/2007 |  150
03/10/2007 |  780
04/10/2007 |  180
05/10/2007 |  871
1. mesajdaki kodlar ile,
Günlük sayfasındaki tarihe göre Tsb sayfasının ilgili değerleri aylık sayfasının ilgili gününe aktarılıyor.....
ancak aylık sayfasında son işlem yapılan gün günlük sayfasındakinden büyükse bu işlemi durdursun

yukarıdaki örneğe göre
Günlük tarihi 04/10/2007, bnin son dolu satırı 6. sı oda a sütununda 5/10/2007 ye eşit
bu durumda 4/10/2007, 5/10/2007 den küçük olduğu için işleme onay vermiyecek
 
Son düzenleme:

N.Ziya Hiçdurmaz

Özel Üye
Katılım
28 Nisan 2007
Mesajlar
2,217
Excel Vers. ve Dili
Office 2013 TR / 32 Bit
yanıt

Kırmızı yerleri ileva edip deneyiniz.
Sub Aylıgayaz()
SifreAc
Set s1 = Sheets("günlük")
Set s2 = Sheets("tsb")
Set s3 = Sheets("devirler")
Set s4 = Sheets("Aylık")
deg1 = s1.[a65536].End(3).Row
deg2 = s1.[b65536].End(3).Row
If Range("a" & deg1) > Range("b" & deg2) Then GoTo atla

For i = 5 To 800
If s4.Cells(i, 1) = s1.Cells(2, 14) Then
'-----------------------------evdevir
'12
s4.Cells(i, 2) = s2.Cells(7, 2) 'alış
s4.Cells(i, 3) = s2.Cells(8, 2) 'satış
s4.Cells(i, 4) = s2.Cells(36, 41) 'Kazanç
'2
s4.Cells(i, 5) = s2.Cells(7, 14) 'alış
s4.Cells(i, 6) = s2.Cells(8, 14) 'satış
s4.Cells(i, 7) = s2.Cells(35, 41) 'Kazanç
'24
s4.Cells(i, 8) = s2.Cells(7, 20) 'alış
s4.Cells(i, 9) = s2.Cells(8, 20) 'satış
s4.Cells(i, 10) = s2.Cells(37, 41) 'Kazanç
'45
s4.Cells(i, 11) = s2.Cells(28, 20) 'alış
s4.Cells(i, 12) = s2.Cells(29, 20) 'satış
s4.Cells(i, 13) = s2.Cells(38, 41) 'Kazanç
'kasa( YEKÜN İSKONTA PEŞİN SAT VERESİYE TAHSİLAT KASA)
s4.Cells(i, 14) = s2.Cells(31, 41) 'yekün
s4.Cells(i, 15) = s2.Cells(33, 41) 'iskonto
s4.Cells(i, 16) = s2.Cells(32, 41) 'ps
s4.Cells(i, 17) = s2.Cells(45, 29) ' vrs
s4.Cells(i, 18) = s2.Cells(44, 41) ' tah
s4.Cells(i, 19) = s2.Cells(45, 41) 'Kasa
End If
Next
SifreKapa
atla:
MsgBox "Tarih farklılığı işleme izin vermiyor.", vbInformation

End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam olmuyor söylemeyi unuttum 36. satırda toplamlar var dolu yani.
Eğer Günlük sayfası n2 deki tarih 04/10/2007 ise
Bu sayfada en son 05/10/2007 de işlem gördüğü için Hata verecek

İşlem tarihi 05/10/2007( 5 ila 35 satırlar arasındaki ilk dolu satır) dan küçük olamaz.

diye hata verecek
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Dim s1 As Worksheet, s2 As Worksheet, s3 As Worksheet

.........
Set s1 = Sheets("günlük")
.........
Set s4 = Sheets("Aylık")
tarih = s1.Cells(2, 14)   'işlem tarihi
.............
Ayl_Son_sat = s4.Range("s36").End(3).Row            'bu kitabın aylık sayfasındaki 36.satırdan önceki son dolu satırı
ayl_son_trh = s4.Range("a" & Ayl_Son_sat)           'son dolu satırın kaydedildiği tarih
............
    If ayl_son_trh > tarih Then
    MsgBox "Daha Önce " & ayl_son_trh & " tarihi için işlem yapmış bulunmaktasınız!" & vbCr & _
           tarih & " için işlem yapamazsınız!": Exit Sub
............
şeklinde çözümü buldum
önemli olan bir aralıktak ison dalı satırı bulmaktı benim sorumda be nsöylemediğim için hocam genel bir çözüm vermiş herhalde.
ilgilenen arkadaşları fayadalanabilmesi için... ekliyorum.
 
Üst