iki tarih arasındaki tüm günleri yazma makrosu

gezgin-49

Altın Üye
Katılım
17 Ekim 2006
Mesajlar
669
Excel Vers. ve Dili
Türkçe 2003
Altın Üyelik Bitiş Tarihi
22-09-2028
Sayın üstadlarım textbox1 (başlangıç tarihi) ve textbox2 (bitiş tarihi) ne girdiğim iki tarih arasını excelde sayfa1 a1 hücresinden aşağıya doğru tüm tarihleri yazmasını istiyorum,
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Bir tane commondbuton ekleyin ona aşağıdaki kodları girin.:cool:
Kod:
Private Sub CommandButton1_Click()
Dim i As Long
range("A:A").clear
For i = CDate(TextBox1.Value) To CDate(TextBox2.Value)
    sat = sat + 1
    Cells(sat, "A").Value = CDate(i)
Next i
MsgBox "bitti"
End Sub
 
Son düzenleme:

gezgin-49

Altın Üye
Katılım
17 Ekim 2006
Mesajlar
669
Excel Vers. ve Dili
Türkçe 2003
Altın Üyelik Bitiş Tarihi
22-09-2028
sayın üstadım siz bir harikasınız, Allah sizden razı olsun, tam istediğim gibi
 

gezgin-49

Altın Üye
Katılım
17 Ekim 2006
Mesajlar
669
Excel Vers. ve Dili
Türkçe 2003
Altın Üyelik Bitiş Tarihi
22-09-2028
aynı konu ile ilgili bir sorum daha olacaktı

textbox1'e 15/10/2010 tarihini textbox2 ye de 10/10/2018 tarihini girdiğimde bu kez sayfa 1 de B1 hücresine 15/10/2010 tarihini C1 hücresine de o yılın son tarihi olan 31/12/2010 tarihini, B2 sütununa 01/01/2011, C2 sütununa 6 ay sonrası olan 30/06/2011, b3 hücresine 01/07/2011, C3 hücresine de 31/12/2011,....... ta son tarihe kadar bu şekilde yapılabilir mi? yani 6'şar aylık olarak tarihlerin başlangıcı ve sonunu yazabilirmiyiz?
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Yazdıklarınızdan anladığıma göre aşağıdaki kodları deneyiniz.:cool:

Kod:
Private Sub CommandButton1_Click()
Dim i As Long, tar As Date, sat As Long
Range("B:C").ClearContents
sat = 1
tar = CDate(TextBox1.Value)
Do While tar <= CDate(TextBox2.Value)
    Cells(sat, "B").Value = tar
    If Month(tar) < 6 Then
        tar = VBA.DateSerial(Year(tar), 7, 1) - 1
        Cells(sat, "C").Value = tar
    Else
        tar = VBA.DateSerial(Year(tar) + 1, 1, 1) - 1
        Cells(sat, "C").Value = tar
    End If
    sat = sat + 1
    tar = VBA.DateSerial(Year(tar) + 1, 1, 1)
Loop
MsgBox "bitti"
End Sub
 

gezgin-49

Altın Üye
Katılım
17 Ekim 2006
Mesajlar
669
Excel Vers. ve Dili
Türkçe 2003
Altın Üyelik Bitiş Tarihi
22-09-2028
Sayın Orion1 siz muhteşemsiniz, Allah razı olsun , ama ufak bir sorun var,
sizin kodlarınıza göre senenin sadece bir yarısını veriyor, ikinci yarısı olan 01/07/.... -31/12/..... olan ikinci yarısını vermiyor.

ayrıca konu ile ilgili iki sorum daha olacak
1- bu tarihleri B5 ile C5 hücresinden başlatmak istesek kodu nasıl değiştirmemiz gerekiyor.
2- Textbox1 ile Textbox hücresine girilen tarihler arasındaki Yıl ay ve gün olarak fark hesabını (örnegin 3 Yıl 5 Ay 6 Gün) Textbox3 de gösterebilirmiyiz (TextBox2-TextBox1=TextBox 3) şeklinde
Saygılarımla
 
Son düzenleme:

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
1nci ve 2nci şıkkı yaptım.
esas sorunuzu anlamadım.
mesela 1.7.2010 ile 10.7.2014 arasında b ve c sütunlarındaki dağılım nasıl olacak,Yazarmısınız?
Kodlar aşağıdadır.:cool:

Kod:
Private Sub CommandButton1_Click()
Dim i As Long, tar As Date, sat As Long, yil As Integer
Dim ay As Integer, gun As Date, gunler As Long
Range("B5:C" & Rows.Count).ClearContents
sat = 5
tar = CDate(TextBox1.Value)
gun = VBA.DateDiff("d", tar, CDate(TextBox2.Value))
yil = gun / 365
ay = (gun - (yil * 365)) / 30
gunler = gun - ((yil * 365) + (ay * 30))
TextBox3.Value = yil & " Yıl," & ay & " Ay," & gunler & " Gün"
Do While tar <= CDate(TextBox2.Value)
    Cells(sat, "B").Value = tar
    If Month(tar) < 6 Then
        tar = VBA.DateSerial(Year(tar), 7, 1) - 1
        Cells(sat, "C").Value = tar
    Else
        tar = VBA.DateSerial(Year(tar) + 1, 1, 1) - 1
        Cells(sat, "C").Value = tar
    End If
    sat = sat + 1
    tar = VBA.DateSerial(Year(tar) + 1, 1, 1)
Loop
MsgBox "bitti"
End Sub
 

gezgin-49

Altın Üye
Katılım
17 Ekim 2006
Mesajlar
669
Excel Vers. ve Dili
Türkçe 2003
Altın Üyelik Bitiş Tarihi
22-09-2028
sayın üstadım textbox1 deki tarih 15/07/2012, textbox2 deki tarihin de 20/08/2014 olduğunu varsayalım

B5 hücresine ilk tarih olan 15/07/2012 , C5 hücresine de o yılın son tarihi (ilk tarih ilk altı ayı geçtiğinden) 31/12/2012

B6 hücresine 01/01/2013 C6 hücresine 30/06/2013

B7 hücresine 01/07/2013 C7 hücresine 31/12/2013

B8 hücresine 01/01/2014 C8 hücresine 30/06/2014

B9 hücresine 01/07/2014 C9 hücresine 20/08/2014 (son tarih) yazmasını istiyorum.

(aslında 2016 yılından önceki tüm tarihlerin bu şekilde 2016 ve sonraki tarihlerin ise 01/01/..... ile 31/12/....) şeklinde gelmesi gerekiyor
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
8 nolu mesajda yaptığım kodlarda gün yanlış hesaplıyor.Textbox3ü kaale almayınız.:cool:
 
Son düzenleme:

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
1-ilk tarih 15.7.2012 değilde 15.4.2012 ise nasıl dağıtılacak?
2-ilk tarih 15.7.2012 değilde 15.8.2012 olursa nasıl dağıtılacak?
 

gezgin-49

Altın Üye
Katılım
17 Ekim 2006
Mesajlar
669
Excel Vers. ve Dili
Türkçe 2003
Altın Üyelik Bitiş Tarihi
22-09-2028
1-ilk tarih 15.7.2012 değilde 15.4.2012 ise nasıl dağıtılacak?
2-ilk tarih 15.7.2012 değilde 15.8.2012 olursa nasıl dağıtılacak?
ilk tarih o yıla ait haziran ayının son günü olan 30 haziran dan önce ise ilk tarih ile o yılın 30 haziranı arası
ilk tarih 30 haziran dan sonraki bir tarihse o tarih ile o yılın 31 Aralık tarihine kadar olan kısım olacak
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Kafam karıştı iyice.
Ben bırakıyorum.Belki başka arkadaşlar yaparlar.:cool:
 

gezgin-49

Altın Üye
Katılım
17 Ekim 2006
Mesajlar
669
Excel Vers. ve Dili
Türkçe 2003
Altın Üyelik Bitiş Tarihi
22-09-2028
ilk tarihin 01/04/2014, son tarihin de 16/10/2018 olduğunu varsayalım
commanbutton düğmesine tıkladığım zaman

excel B5 hücresine 01/04/2014 ------ C5 hücresine de 30/06/2014
B6 hücresine 01/07/2014 ------ C6 31/12/2014
B7 01/01/2015 ------ C7 30/06/2015
B8 01/07/2015 ------ C8 31/12/2015 yani 31/12/2015 tarihine kadar olan kısma kadar 6'şar aylık dönemleri atmasını,

2016 ve sonrası için de
B9 01/01/2016 ------ C9 31/12/2016
B10 01/01/2017 ------ C10 31/12/2017
B11 01/01/2018 ------- C11 16/10/2018 Son tarih

yani ilk tarihten 31/12/2015 tarihine kadar olan kısım için 6'şar aylık dönemler 01/01/2016 tarihinden sonra ise 1'er yıllık dönemleri kapsaması gerekiyor.
 
Son düzenleme:

gezgin-49

Altın Üye
Katılım
17 Ekim 2006
Mesajlar
669
Excel Vers. ve Dili
Türkçe 2003
Altın Üyelik Bitiş Tarihi
22-09-2028
Sayın üstadım dosya ekliyorum.
 

Ekli dosyalar

Katılım
6 Ekim 2006
Mesajlar
40
Excel Vers. ve Dili
office 2013- office 2016
Altın Üyelik Bitiş Tarihi
30/05/2022
Bir tane commondbuton ekleyin ona aşağıdaki kodları girin.:cool:
Kod:
Private Sub CommandButton1_Click()
Dim i As Long
range("A:A").clear
For i = CDate(TextBox1.Value) To CDate(TextBox2.Value)
    sat = sat + 1
    Cells(sat, "A").Value = CDate(i)
Next i
MsgBox "bitti"
End Sub
Merhaba bu konuyla ilgili olarak bir şey sormak istiyorum. Sütunu silmeden kaydedilen iki tarih arasını değiştirmek istiyoruz. Yanlış girilen iki tarihi yeni iki tarihler güncellemek istediğimizde nasıl bir kod yazabiliriz? Şimdiden çok teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,276
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosya ekleyerek yapmak isetdiğiniz işlemi açıklar mısınız?
 
Katılım
6 Ekim 2006
Mesajlar
40
Excel Vers. ve Dili
office 2013- office 2016
Altın Üyelik Bitiş Tarihi
30/05/2022
Merhabalar Korhan Bey, Yapmak istediğim şu; kullanıcı izin alacağı tarihleri girecek (izin başlangıç ve bitiş tarihi) bunlar a sütununda iki tarih arasındaki tüm tarihler alt alta yazılacak. Buraya kadar olan kısmı hallettim. Benim sıkıntım kullanıcı tarihleri yanlış girdiğinde veya girdiği veriyi değiştirmek istediğinde girilen bu iki tarih ve arasındaki satırları güncelleyememek. Şimdiden teşekkür ederim ilginize, kolay gelsin.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,276
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu durumda şöyle bir mantık yürütebilirsiniz.

Bir alana hatalı tarih aralığını girersiniz. Bu aralığı sayfadan silersiniz. Sonrasında yeni tarih aralığını sayfaya aktarırsınız.
 
Katılım
6 Ekim 2006
Mesajlar
40
Excel Vers. ve Dili
office 2013- office 2016
Altın Üyelik Bitiş Tarihi
30/05/2022
Çok haklısınız Korhan Bey ama, bunu kodlara dökmek, kodlarla ifade etmek benim için oldukça zor ve karışık..
 
Üst