tarih fonksiyonlarının makro ile yazılması

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
ekteki örrnek dosyada yerleşik fonksiyon kullanılarak yaptığımız işlemi makro kodları ile nasıl yapabiliriz?

sayfa1 deki gün sayısı / başlangıç tarihi / bitiş tarihi dikkate alınarak
1-)sayfa1 de düşey olarak AYLARIN İLK GÜN tarihlerinin yazdırılmasını
2-)sayfa1 de düşey olarak AYLARIN SON GÜN tarihlerinin yazdırılmasını
3-)sayfa2 de AYLARIN İLK GÜN tarihlerinin yazılmasını
4-)sayfa2 de HAFTALARIN İLK GÜN tarihlerinin yazılmasını
5-)sayfa2 de AYLARIN SON GÜN tarihlerinin yazılmasını
6-)sayfa2 de HAFTALARIN SON GÜN tarihlerinin yazılmasını
7-)sayfa3 de günlerin yazılması (256. günden sonra çözüm var mı?)
NOT 1: VBA KODLARI, MODÜLLERE YAZILIP SAYFA AKTİF OLUNCA, SAYFANIN KOD SAYFASINDAN ÇAĞRILACAK
NOT 2: yerleşik fonksiyon kullanılarak daha pratik formüller oluşturulabilir mi?

dipnot: sayfa3 de formül yanlış yazılmış ama önemli değil, bakan kişi ne yapılacağını hemen anlar zaten.
 
Son düzenleme:

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
ilkgün ve songün fonksiyonu kullanılarak ilgili kodları yazabilecek arkadaş var mı acaba?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,444
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Sayfa3 iBaşlangıç Bitiş Tarihleri için:

Kod:
Public Sub Tarih_Ilk_Son_Gun()
Set s3 = Sheets("Sayfa3")
s3.Select
j = 5
Range("F2:IV2").ClearContents
For i = [C4] To [C4] + [C3]
    j = j + 1
    Cells(2, j) = i
Next i
End Sub
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
syn Necdet Yeşertener kodlar için teşekkürler.

Yurtsever kardeş ;)
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,444
Excel Vers. ve Dili
Ofis 365 Türkçe
RMŞ :)


Sayın Uzman Amele
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
syn Necdet Yeşertener,
sayfa3 ün kod bölümüne aşağıdaki kodu yazıp sayfa aktifse makroyu otomatik çalıştırıyorum. aynı şekilde başka sayfada da kullanmak istersem Set s3 = Sheets("Sayfa3") kısmını nasıl değiştirmem gerekiyor?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call Tarih_Ilk_Son_Gun
End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,444
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

O zaman kodları aşağıdaki gibi değiştirmek gerek.

Kod:
Public Sub Tarih_Ilk_Son_Gun()
Set s3 = Sheets("Sayfa3")
j = 5
s3.Range("F2:IV2").ClearContents
For i = s3.[C4] To s3.[C4] + s3.[C3]
    j = j + 1
    s3.Cells(2, j) = i
Next i
End Sub
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
syn Necdet Yeşertener, tam olarak anlatamadım. Set s3 = Sheets("Sayfa3") s3'ü bu şekilde tanımlarsak herzaman sayfa3 de yeni tarihleri yazar. ben başka sayfada yazdırmak istediğimde (sayfa4) s3 ün değişken olması gerekir.
Başka sayfada yazdırmak istersem yine Range("F2:IV2") bu hücrelere yazsın ama sayfa farklı olacak.
 
Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,444
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

O zaman tüm s3 leri silin, set lafını da kaldırın. O zaman kodlar o an aktif olan sayfada çalışır.

Ya da sayfanın değişken olabileceğini söylüyorsanız Set s3=Sheets(i) diyebilirsiniz, i sayfa numarasını gösteren bir değişkendir.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
syn Necdet Yeşertener, aşağıdaki gibi değiştirince başka sayfalarda da kullanmak mümkün oldu. teşekkürler.
Public Sub Tarih_Ilk_Son_Gun()
j = 5
Range("F2:IV2").ClearContents
For i = [C4] To [C4] + [C3]
j = j + 1
Cells(2, j) = i
Next i
End Sub
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
7 maddelik makro kodlarından 7. nin çözümünü syn N.Yeşertener verdi.
ilk 6 madde için çözüm üretecek arkadaş var mı acaba?

sayfa1 deki gün sayısı / başlangıç tarihi / bitiş tarihi dikkate alınarak
1-)sayfa1 de düşey olarak AYLARIN İLK GÜN tarihlerinin yazdırılmasını
2-)sayfa1 de düşey olarak AYLARIN SON GÜN tarihlerinin yazdırılmasını

3-)sayfa2 de AYLARIN İLK GÜN tarihlerinin yazılmasını (yatay, birleştirilmiş hücrede)
4-)sayfa2 de HAFTALARIN İLK GÜN tarihlerinin yazılmasını
5-)sayfa2 de AYLARIN SON GÜN tarihlerinin yazılmasını (yatay, birleştirilmiş hücrede)
6-)sayfa2 de HAFTALARIN SON GÜN tarihlerinin yazılmasını
7-)sayfa3 de günlerin yazılması
NOT 1: VBA KODLARI, MODÜLLERE YAZILIP SAYFA AKTİF OLUNCA, SAYFANIN KOD SAYFASINDAN ÇAĞRILACAK

son not: 3'ü gitti, 4'ü kaldı
 
Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,444
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Sayfa1 için

Kod:
Public Sub Sayfa1_Tarih()
Dim i As Date
j = 4
i = [C4]
Do While i <= [C5]
    Cells(j, "D") = i
    Cells(j, "E") = DateSerial(Year(i), Month(i) + 1, 0)
    j = j + 1
    i = DateSerial(Year(i), Month(i) + 1, 1)
Loop
End Sub
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
syn N.Ye&#351;ertener, kod i&#231;in te&#351;ekk&#252;rler.
g&#252;n say&#305;s&#305;n&#305; ve ba&#351;lama tarihini de&#287;i&#351;tirmek istedi&#287;imizde; sonradan girdi&#287;imiz g&#252;n say&#305;s&#305; &#246;ncekinden k&#252;&#231;&#252;k olursa, listenin alt&#305;nda eski tarihler kalacakt&#305;r.
makro her &#231;al&#305;&#351;t&#305;&#287;&#305;nda D ve E s&#252;tunundaki verileri silmesi gerekir. galiba a&#351;a&#287;&#305;daki gibi olacak

Public Sub Sayfa1_Tarih()
Range("d:e").ClearContents
Dim i As Date
j = 4
i = [C4]
Do While i <= [C5]
Cells(j, "D") = i
Cells(j, "E") = DateSerial(Year(i), Month(i) + 1, 0)
j = j + 1
i = DateSerial(Year(i), Month(i) + 1, 1)
Loop
End Sub
 
Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,444
Excel Vers. ve Dili
Ofis 365 Türkçe
Sayın uzmanamele ,

Artık ince rütuşları öğrenmiş olmalısınız diye yazmadım :)

Ayrıca gerekli açıklamayı yaptığınız için de kutlarım, makro ile yeni ilgilenlere yardımcı olmuş oluyorsunuz.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
yurtsever olman&#305;n yan&#305;nda ince ruhlusunuz. te&#351;ekk&#252;r ederim :)
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
vba n&#305;n emekleme d&#246;nemindeyiz. su g&#246;r&#252;nce agu diyoruz :)

7 maddelik makro kodlar&#305;ndan 3 tanesinin &#231;&#246;z&#252;m&#252;n&#252; syn N.Ye&#351;ertener verdi.
3'&#252; gitti, 4'&#252; kald&#305;.

sayfa1 deki g&#252;n say&#305;s&#305; / ba&#351;lang&#305;&#231; tarihi / biti&#351; tarihi dikkate al&#305;narak
1-)sayfa1 de d&#252;&#351;ey olarak AYLARIN &#304;LK G&#220;N tarihlerinin yazd&#305;r&#305;lmas&#305;n&#305;
2-)sayfa1 de d&#252;&#351;ey olarak AYLARIN SON G&#220;N tarihlerinin yazd&#305;r&#305;lmas&#305;n&#305;

3-)sayfa2 de AYLARIN &#304;LK G&#220;N tarihlerinin yaz&#305;lmas&#305;n&#305; (yatay, birle&#351;tirilmi&#351; h&#252;crede)
4-)sayfa2 de HAFTALARIN &#304;LK G&#220;N tarihlerinin yaz&#305;lmas&#305;n&#305;
5-)sayfa2 de AYLARIN SON G&#220;N tarihlerinin yaz&#305;lmas&#305;n&#305; (yatay, birle&#351;tirilmi&#351; h&#252;crede)
6-)sayfa2 de HAFTALARIN SON G&#220;N tarihlerinin yaz&#305;lmas&#305;n&#305;
7-)sayfa3 de g&#252;nlerin yaz&#305;lmas&#305;
NOT 1: VBA KODLARI, MOD&#220;LLERE YAZILIP SAYFA AKT&#304;F OLUNCA, SAYFANIN KOD SAYFASINDAN &#199;A&#286;RILACAK
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
haftan&#305;n g&#252;nlerini bulmak i&#231;in izlenecek yol &#351;&#246;yle olmal&#305; galiba.
aral&#305;k 2007 ay&#305; i&#231;in haftan&#305;n ilk g&#252;nleri; 01.12.07 / 08.12.07 / 15.12.07 / 22.12.2007
aral&#305;k 2007 ay&#305; i&#231;in haftan&#305;n son g&#252;nleri; 07.12.07 / 14.12.07 / 21.12.207 / 31.12.07 olmal&#305;. ay&#305;n son haftas&#305;ndaki g&#252;n say&#305;s&#305;n&#305;n de&#287;i&#351;ken oldu&#287;una dikkat etmek laz&#305;m.
haftan&#305;n ilk g&#252;nleri i&#231;in ilgili ay&#305;n ilk g&#252;n&#252;n&#252; 1. haftan&#305;n ilk g&#252;n&#252; al&#305;p sonraki her hafta i&#231;in +7 ilave ederek bulabiliriz.
haftan&#305;n son g&#252;n&#252; i&#231;in ilgili ay&#305;n ilk g&#252;n&#252;ne +7 ilave ederek devam etmek gerekir. 4. haftan&#305;n son g&#252;n&#252; o ay&#305;n son g&#252;n&#252;d&#252;r ama 4. haftada g&#252;n say&#305;s&#305; herzaman 7 olmaz.
art&#305;k y&#305;llarda &#351;ubat ay&#305;n&#305;n son haftas&#305; ve 31 g&#252;nl&#252;k aylarda son hafta g&#252;n say&#305;s&#305; i&#231;in nas&#305;l form&#252;le edilir bilemiyorum.

not: esasen her ay i&#231;in 4 hafta oldu&#287;u kabul ediliyor. hafta say&#305;s&#305; 4 sabit, g&#252;n say&#305;s&#305; de&#287;i&#351;ken tabiki
 
Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,444
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Sayfa2 Ayların İlk ve Son Günleri de benden olsun :)

Kod:
Public Sub Sayfa2_Tarih()
Dim i As Date
j = 2
i = [C4]
Range("F4:IV4").ClearContents
Range("F9:IV9").ClearContents
Do While i <= [C5]
    j = j + 4
    Cells(4, j) = DateSerial(Year(i), Month(i), 1)
    Cells(9, j) = DateSerial(Year(i), Month(i) + 1, 0)
    i = DateSerial(Year(i), Month(i) + 1, 1)
Loop
End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,444
Excel Vers. ve Dili
Ofis 365 Türkçe
Tekrar Merhaba,

Her ay&#305;n illakine 4 haftaba&#351;&#305; olacak diye bir kural yok, bak&#305;n&#305;z 2007 Aral&#305;k.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
syn N.Ye&#351;ertener, yine h&#305;z&#305;r gibi yeti&#351;tiniz. :)
her ay&#305;n 4 hafta ba&#351;&#305; oldu&#287;unu kabul ediyoruz ve ilk hafta ba&#351;&#305; daima o ay&#305;n ilk g&#252;n&#252;d&#252;r. s&#246;yledi&#287;iniz do&#287;ru ama &#231;al&#305;&#351;mamda bu &#351;ekilde kabul yapmak zorunday&#305;m.
 
Üst