• DİKKAT

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

ay atlatma sorunu hk.

  • Konbuyu başlatan Konbuyu başlatan chngrcn
  • Başlangıç tarihi Başlangıç tarihi
Katılım
5 Mart 2010
Mesajlar
295
Excel Vers. ve Dili
Microsoft Office 2010
forumun değerli üyeleri,

a1 hücresinde girdiğim tarihi örneğin 01.01.2013 olarak girdiğim tarihi ay atlata atlata a2, a3 a4.... hücrelerine makro ile nasıl yazdırabilirim ?

yani sonuç olarak

01.01.2013
01.02.2013
.
.
.
01.05.2015 gibi


yada


31.01.2013
28.02.2013
31.03.2013
.
.
.
.
.
31.12.2016 gibi... saygılarımla..
 
Buyurun.:cool:
Kod:
Sub ay59()
Dim tarih As Date, sat As Long, i As Long
For i = 1 To 12
    tarih = DateSerial(Year(Range("A1").Value), Month(Range("A1").Value) + i, Day(Range("A1").Value))
    Cells(i + 1, "A").Value = tarih
Next i
MsgBox "İşlem tamamlanmıstır." & vbLf & "evrengizlen@hotmail.com"


End Sub
 
Perfect.. evren hocam.. aklına sağlık.. Allaha emanet..
 
Son düzenleme:
Evren hocam, yanlız bir sorun tespit ettim.. a1 hücresine 31.01.2013 yazdiğimda, şubat ayını atlıyor.. şubat biliyorsunki 28 gün.. ekli dosyaya ekledim.. burada bir sıkıntı var.. tekrar deneyebilir misin ?



Buyurun.:cool:
Kod:
Sub ay59()
Dim tarih As Date, sat As Long, i As Long
For i = 1 To 12
    tarih = DateSerial(Year(Range("A1").Value), Month(Range("A1").Value) + i, Day(Range("A1").Value))
    Cells(i + 1, "A").Value = tarih
Next i
MsgBox "İşlem tamamlanmıstır." & vbLf & "evrengizlen@hotmail.com"


End Sub
 

Ekli dosyalar

Kısacası evren hocam ben asıl çalışmamı ekte ekliyorum.. sana zahmet ayarlayıver tıkandım kaldım.. senet programı hazırlıyorum. senet sheet'indeki "ödeme günü " yani F3 hücresi ve ondan sonra gelen f24 .. devam eden hücrelerdeki veriyi senet adedi sayısı kadar, ay atlata atlata döngünün içine koymak istiyorum.. ekteki dosyayi incelerseniz, farkedeceksiniz.. saygılarımla..
 

Ekli dosyalar

Kısacası evren hocam ben asıl çalışmamı ekte ekliyorum.. sana zahmet ayarlayıver tıkandım kaldım.. senet programı hazırlıyorum. senet sheet'indeki "ödeme günü " yani F3 hücresi ve ondan sonra gelen f24 .. devam eden hücrelerdeki veriyi senet adedi sayısı kadar, ay atlata atlata döngünün içine koymak istiyorum.. ekteki dosyayi incelerseniz, farkedeceksiniz.. saygılarımla..
ilk tarih senet shetinde hangi hücrede olacak?
 
ilk tarih senet shetinde hangi hücrede olacak?

F3 Hücresind olacak evren hocam bi önceki mesajimda yazdım zaten.. "SEPET" sheet'indeki K sütunundaki en son dolu satırı getirim " SENET " sheetindeki F3 hücresine atacak ondan sonra ay atlatma yapacak bir sonraki senetlere.. senet adedi kadar ay atlatma yapacak tabi..

zaten kodları incelersen, senet adedi kadar senet dolduruyor döngüde, bu döngünün icine ay atlatmayıda koyabilirsek tam olacak.. sonuc olarak F3' e atiyorum 31.01.2013 tarihinimi atadı ondan sonraki F24 Hücresine şubat ayı 28 gün olduğu için 28.02.2013 yapacak F45 hücresi 31.03.2013 olacak. böyle böyle bir sonraki senetlere atama yapacak...

sende takdir edersin ki bazı aylar 30 gün bazı aylar 31 gün.. şubat ayı da 28 veya 29 gün oluyor.. bunu otomatik ayarlaması lazım...
 
Son düzenleme:
Evren hocam, yanlız bir sorun tespit ettim.. a1 hücresine 31.01.2013 yazdiğimda, şubat ayını atlıyor.. şubat biliyorsunki 28 gün.. ekli dosyaya ekledim.. burada bir sıkıntı var.. tekrar deneyebilir misin ?
anladım.
Aşağıdaki kodlama doğru sonuç üretiyor.:cool:
Kod:
Sub ay59()
Dim tarih As Date, sat As Long, i As Long
For i = 1 To 30
    Cells(i + 1, "A").Value = tarih
    tarih = VBA.DateAdd("m", i, DateValue("30.1.2013"))
    Cells(i + 1, "A").Value = tarih
Next i

End Sub
 
anladım.
Aşağıdaki kodlama doğru sonuç üretiyor.:cool:
Kod:
Sub ay59()
Dim tarih As Date, sat As Long, i As Long
For i = 1 To 30
    Cells(i + 1, "A").Value = tarih
    tarih = VBA.DateAdd("m", i, DateValue("30.1.2013"))
    Cells(i + 1, "A").Value = tarih
Next i

End Sub


evren hocam malesef doğru sonuç göstermiyor..
30.1.2013
28.2.2013
30.3.2013
30.4.2013
30.5.2013
30.6.2013
şeklinde devam ediyor.. 31 gün olan aylar ne olacak ?
 
Bu kodlar ay sonu gösterme amacı ile yazılmadı.1 aylık periyotlar halinde gösteriyor
30.04.2013 ten sonra 1 ay sonra(30) gün.öyle gösteriyor.
aşağıdaki kodu ilgili kodlam değiştiriseniz.istediğiniz olacaktır.:cool:
Kod:
 tarih = VBA.DateAdd("m", i, DateValue("[B][COLOR="Red"]31.1.2013[/COLOR][/B]"))
 
Bu kodlar ay sonu gösterme amacı ile yazılmadı.1 aylık periyotlar halinde gösteriyor
30.04.2013 ten sonra 1 ay sonra(30) gün.öyle gösteriyor.
aşağıdaki kodu ilgili kodlam değiştiriseniz.istediğiniz olacaktır.:cool:
Kod:
 tarih = VBA.DateAdd("m", i, DateValue("[B][COLOR="Red"]31.1.2013[/COLOR][/B]"))


evren hocam hayırlı geceler..
öncelikle şunu belirtmek istiyorum..

varan 1:
benim amacım senet programında ilk senedin ödeme tarihini, atıyorum

01.01.2013 mü girdim ? diyelimki 5.adet senet var..

1. senet : 01.01.2013
2. senet : 01.02.2013
3. senet : 01.03.2013
4. senet : 01.04.2013
5. senet : 01.05.2013 olacak..

varan 2:
atıyorum ilk senedin tarihini 30.01.2013 mü girdim ?
1. senet : 30.01.2013
2. senet : 28.02.2013 (şubat 28 çektiği için 30 algılamayacak 28 algılayacak )
3. senet : 30.03.2013 ( bundan sonrakiler yine 30 olarak devam edecek )
4. senet : 30.04.2013
5. senet : 30.05.2013 olacak..

varan 3:
atıyorum ilk senedin tarihini 31.01.2013 mü girdim ?

1. senet : 31.01.2013
2. senet : 28.02.2013 (şubat 28 çektiği için 31 algılamayacak 28 algılayacak )
3. senet : 31.03.2013
4. senet : 30.04.2013 (nisan 30 çektiği için 31 algılamayacak 30 algılayacak )
5. senet : 31.05.2013 olacak..

tüm mesele bundan ibaret...

senin en son gönderdiğin kodda sıkıntı var.. ekli çalışmada kontrol etmen için tekrardan ekliyorum hocam..

Kod:
Sub ay_atlat()
Dim tarih As Date, sat As Long, i As Long

Sheets("sayfa1").Cells(3, 6).Value = "31.01.2013"

y = 1

For i = 3 To 500 Step 3
    
    tarih = VBA.DateAdd("m", y, DateValue("31.01.2013"))
    Cells(i, "F").Value = tarih
    y = y + 1
Next i
End Sub
 

Ekli dosyalar

Günaydın,
sayın Orion1'in hoşgörüsüne sığınarak,
kodlarınızda bir iki değişiklik yaptım
İyi çalışmalar.
Kod:
Sub senethazirla()

Set s1 = Sheets("SENET")
Set s2 = Sheets("SEPET")
no = 1
Z = 3
sat = s2.[A65536].End(3).Row

Application.ScreenUpdating = False

For Z = 3 To s1.[A65536].End(3).Row
senetsayisi = s2.Cells(sat, 12).Value
hululuvade = [I][COLOR=Red]CDate(s2.Cells(sat, 11).Value)[/COLOR][/I]
If no > senetsayisi Then

GoTo 100

Else
GoTo 200

200
s1.Cells(Z, 14).Value = no                          ' senet sırası
s1.Cells(Z, 6).Value =[COLOR=Red][I] DateAdd("m", no - 1, hululuvade)[/I][/COLOR] ' ödeme günü tarihi
s1.Cells(Z, 10).Value = s2.Cells(sat, 10).Value     ' ödeme miktarı senet tutarı DateAdd("m", i, hululuvade)
s1.Cells(Z + 2, 11).Value = s2.Cells(sat, 11).Value  ' ödeme günü tarihi yazıyla
s1.Cells(Z + 3, 6).Value = s2.Cells(sat, 3).Value   ' alacaklı
s1.Cells(Z + 5, 9).Value = s2.Cells(sat, 9).Value   ' ödeme şekli
s1.Cells(Z + 9, 9).Value = s2.Cells(sat, 5).Value   ' borçlunun adı soyadı
s1.Cells(Z + 9, 13).Value = Date                    ' düzenleme tarihi
s1.Cells(Z + 10, 9).Value = s2.Cells(sat, 8).Value  ' borçlunun adresi
s1.Cells(Z + 13, 9).Value = s2.Cells(sat, 4).Value  ' borçlunun T.C.Kimlik Nosu
s1.Cells(Z + 14, 9).Value = s2.Cells(sat, 7).Value  ' borçlunun Telefonu
s1.Cells(Z + 15, 9).Value = s2.Cells(sat, 6).Value  ' borçlunun cepTelefonu

no = no + 1
Z = Z + 20
hululuvade = hululuvade + 30

End If
Next Z
Application.ScreenUpdating = True
100
End Sub
 
evren hocam hayırlı geceler..
öncelikle şunu belirtmek istiyorum..

varan 1:
benim amacım senet programında ilk senedin ödeme tarihini, atıyorum

01.01.2013 mü girdim ? diyelimki 5.adet senet var..

1. senet : 01.01.2013
2. senet : 01.02.2013
3. senet : 01.03.2013
4. senet : 01.04.2013
5. senet : 01.05.2013 olacak..

varan 2:
atıyorum ilk senedin tarihini 30.01.2013 mü girdim ?
1. senet : 30.01.2013
2. senet : 28.02.2013 (şubat 28 çektiği için 30 algılamayacak 28 algılayacak )
3. senet : 30.03.2013 ( bundan sonrakiler yine 30 olarak devam edecek )
4. senet : 30.04.2013
5. senet : 30.05.2013 olacak..

varan 3:
atıyorum ilk senedin tarihini 31.01.2013 mü girdim ?

1. senet : 31.01.2013
2. senet : 28.02.2013 (şubat 28 çektiği için 31 algılamayacak 28 algılayacak )
3. senet : 31.03.2013
4. senet : 30.04.2013 (nisan 30 çektiği için 31 algılamayacak 30 algılayacak )
5. senet : 31.05.2013 olacak..

tüm mesele bundan ibaret...

senin en son gönderdiğin kodda sıkıntı var.. ekli çalışmada kontrol etmen için tekrardan ekliyorum hocam..

Kod:
Sub ay_atlat()
Dim tarih As Date, sat As Long, i As Long

Sheets("sayfa1").Cells(3, 6).Value = "31.01.2013"

y = 1

For i = 3 To 500 Step 3
    
    tarih = VBA.DateAdd("m", y, DateValue("31.01.2013"))
    Cells(i, "F").Value = tarih
    y = y + 1
Next i
End Sub
anlatığınız konular hep kendisi ile çelişiyor.
eğer başlama tarihini 30.01.2013 yazarsanız,her ayın 30 unu gösteriyor zaten.
Ben bundan sonra çekiliyorum.Başka arkadaşlarla devam edebilirisiniz.:cool:
 
anlatığınız konular hep kendisi ile çelişiyor.
eğer başlama tarihini 30.01.2013 yazarsanız,her ayın 30 unu gösteriyor zaten.
Ben bundan sonra çekiliyorum.Başka arkadaşlarla devam edebilirisiniz.:cool:



evren hocam.. öncelikle emeklerin için tesekkür ederim.. affına sığınarak,
anlattığım hiç bir konuda çelişmedim. ayrıca en son gönderdiğiniz örnekte, 01.01.2013 yazip deneyebilirmisiniz ? her ayın 1'ini gösterecek mi ? ben denedim olmadı... 01.01.2013 yazdığımda ay sonunu atıyor.. 8.nolu mesajındaki kodu ekte gönderiyorum incelemen için.. a1 hücresine 01.01.2013 yazdiğimda bir sonraki hücrelere ay sonunu atıyor.. saygılarımı sunarım.. ilgin icin tesekkür ederim..
 

Ekli dosyalar

Ben kodun içine başlayacağı tarihi yazdım.
başlangıç tarihini a1 hücresinden almıyor.
Dosya ektedir.:cool:
Kod:
Sub ay59()
Dim tarih As Date, sat As Long, i As Long
Range("A:A").Clear
For i = 1 To 30
    tarih = VBA.DateAdd("m", i, DateValue("1.1.2013"))
    Cells(i + 1, "A").Value = tarih
Next i

End Sub
 

Ekli dosyalar

Günaydın,
sayın Orion1'in hoşgörüsüne sığınarak,
kodlarınızda bir iki değişiklik yaptım
İyi çalışmalar.


dentex abi, çok teşekkür ederim.. harika olmuş :) görüşürüz abi..

evren hocam, emeklerin için sanada tesekkür ederim. hakkını helal et..
 
Rica ederim,
iyi akşamlar dilerim.
 
Geri
Üst