Ajanda için yardım edebilir misiniz?

Sefa.N

Altın Üye
Katılım
21 Şubat 2009
Mesajlar
52
Excel Vers. ve Dili
2016 ProPlus Türkçe
Altın Üyelik Bitiş Tarihi
20-10-2026
Herkese selamlar dilerim.

İttire kaktıra bir şekilde yapmaya çalıştığım ancak sonrasında Ömer Bey'in yardımları ile doğru düzgün bir şekle sokulmuş olan aşağıdaki gibi bir takvimim mevcut. Ben bunu ajanda formatına sokup biraz daha işlevsellik kazandırmak istiyorum. Bu husustaki ihtiyaçlarımı düşününce, formül kullanarak bir çözüm bulunabileceğinden emin olamadığım için aşağıda belirteceğim noktalarda bir takım makro kodlarında yardımlarınıza ihtiyaç duymaktayım (Bu vesileyle makrolara da ilk adımımı atmış olacağım).

Dosyamdaki takvimde ihtiyaç duyduğum detaylar şu şekilde;
  • J4 hücresinde standart olarak (daha doğrusu excel açıldığında) bugünün tarihi olmalı ancak, soldaki takvimden herhangi farklı bir tarih seçilirse/tıklanırsa, seçilmiş olan o günün tarihini göstermeli.
  • J5 hücresinden aşağıya doğru, PROGRAM sayfasındaki verilere göre bugün yapılacakların BAŞLIKLARI listelenmeli. Eğer, J4'te bugünden farklı bir tarih görünüyorsa o güne ait olan yapılacakların BAŞLIKLARI listelenmeli (Bu toplamda kaç satıra tekabül eder emin değilim, ilgili günde 1 kayıt da olabilir, 60-70 kayıt da olabilir bu nedenle "şu satıra kadar" diye bir sınır belirtemiyorum).
  • L4 hücresinde, 30 Aralık 2021 - 06 Ocak 2022 formatında bugünden itibaren 1 haftalık tarih aralığı yer almalı.
  • L5 hücresinden aşağıya doğru, PROGRAM sayfasındaki verilere göre bugün de dahil olmak üzere 7 gün boyunca yapılacak tüm işlemlerin tarihleri listelenmeli.
  • M5 hücresinden aşağıya doğru, PROGRAM sayfasındaki verilere göre bugünün işlemleri dahil olmak üzere 7 günlük tüm işlemlerin BAŞLIKLARI listelenmeli (L ve M sütunlarındaki azami satır sayısı konusunda da bir sınır yok).
  • PROGRAM sayfasında ise bugünden itibaren önümüzdeki 7 günün tüm işlemlerine ait satırların metin rengi kırmızı olmalı.
  • Takvim üzerinde, farklı bir tarihe tıklanmış ise PROGRAM sayfasındaki o tarihe ait tüm verilerin metin rengi kırmızı olmalı.
  • NOT: PROGRAMLAR sayfasındaki veri giriş adeti belirsiz olmakla birlikte, hiçbir veri silinmeden yeni veri girişleri sürekli olarak tablonun en alt satırına olacaktır (Sütun başlıklarındaki filtrelemeler ile karışık tarihli girdiler, elle kronolojik olarak sıralanacak).
Umarım yapmayı amaçladığım şey, imkansız derecesinde bir beklenti değildir. Zaman ayırıp yardımcı olabilirseniz memnun olurum.
Herkese esenlikler dilerim.
 

Ekli dosyalar

Sefa.N

Altın Üye
Katılım
21 Şubat 2009
Mesajlar
52
Excel Vers. ve Dili
2016 ProPlus Türkçe
Altın Üyelik Bitiş Tarihi
20-10-2026
Yardımcı olabilecek olan var mı?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
  • L4 hücresinde, 30 Aralık 2021 - 06 Ocak 2022 formatında bugünden itibaren 1 haftalık tarih aralığı yer almalı.
Bu tariharalığı her daim bugünün tarihine mi bağlı yoksa takvimden yeni bir güne tıklayınca ona göre değişecek mi?
 

Sefa.N

Altın Üye
Katılım
21 Şubat 2009
Mesajlar
52
Excel Vers. ve Dili
2016 ProPlus Türkçe
Altın Üyelik Bitiş Tarihi
20-10-2026
  • L4 hücresinde, 30 Aralık 2021 - 06 Ocak 2022 formatında bugünden itibaren 1 haftalık tarih aralığı yer almalı.
Bu tariharalığı her daim bugünün tarihine mi bağlı yoksa takvimden yeni bir güne tıklayınca ona göre değişecek mi?
L4 için o tarihi sadece beklentim olan formatı göstermesi açısından örnek olarak belirttim. L4'te sabit olarak "bugün de dahil olmak üzere 1 haftalık sürenin başlangıç ve bitiş tarihi" yer almasını hedefliyorum ancak zorlayıcı bir şey olacaksa alternatiflere de açığım. İlle de bu olmalı diye bir kaidem yok aslında.

Tıklamaya bağlı olarak değişkenlik göstermesi gereken tarih hücresi J4 hücresinde olacak.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Zorlayacak bir durum yok.
Öğrenmek istediğimi tekrar yazayım.

Dosyayı açtık.
Bugün 19 Aralık
  1. L4 de 19-27 aralık mı yazacak?
  2. Devamında takvimden 3 Ocak 2022 tıkladım. L4 de 3-11 Ocak mı yazacak?
Ayrıca 1 hafta diyorsunuz ama bahsettiğiniz aralık 8 günlük. Doğru mudur?
 

Sefa.N

Altın Üye
Katılım
21 Şubat 2009
Mesajlar
52
Excel Vers. ve Dili
2016 ProPlus Türkçe
Altın Üyelik Bitiş Tarihi
20-10-2026
1. Bugün 19 Aralık ise; L4'te bugünü birinci gün baz alarak 19-25 Aralık yazacak.
2. Bugün 3 Ocak ise; 3 Ocak tarihini ilk gün baz alıp 3-9 Ocak tarihini gösterecek.

Ancak az evvel de belirttiğim gibi, L4'teki tarih göstergesi sadece bugünün tarihine bağlı, günlük olarak değişecek. Takvimdeki herhangi bir tarih hücresine tıklanması ile değişkenlik göstermemeli.

Meramımı anlatmaya çalışırken ufak bir hata yapıp 8 gün olarak göstermiş olabilirim. Kusuruma bakmayın.
 

Sefa.N

Altın Üye
Katılım
21 Şubat 2009
Mesajlar
52
Excel Vers. ve Dili
2016 ProPlus Türkçe
Altın Üyelik Bitiş Tarihi
20-10-2026
Öncelikle, hem zamanınızı hem de emeğini harcadığınız için teşekkür ederim.

Dosyayı ilk açışımda aşağıda görsellerini eklediğim hatalarla karşılaşıyorum.

J sütunu ve tıklama ile ilgili her şey kusursuz olmuş.

Ancak; Haftalık Program Listesi "L4" hücresinde belirtilen tarih aralığındaki programlardan yalnızca bugüne ait olanlar (ve tarihleri) listelenmekte. Buna paralel olarak "Program sayfasında" sadece bugüne ait programların/görevlerin rengi değişiyor. 19-25 aralık arasındaki tüm başlıkların L4 altında listelenmesini ve program sayfasında da renginin değişmesini hedeflemiştim.

1.png


2.png
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
1. Takvim sayfanızda sorularınızı yazdığınız satırları silin.
Benim gönderdiğim dosyada zaten ben silmiştim ve hata vermiyor bende.

2. Module 1 içindeki aşağıdaki kodu değiştirin
C++:
Sub WeeklyTask()
Dim Veri, Say As Integer, i As Long
    Worksheets("TAKVİM").Range("L5:M" & Rows.Count) = ""
    son = WorksheetFunction.CountA(Worksheets("PROGRAMLAR").Range("B:B")) + 1
    If son < 3 Then Exit Sub
    ReDim Liste(1 To son - 2, 1 To 2)
    Veri = Worksheets("PROGRAMLAR").Range("B3:D" & son).Value
    For i = 1 To UBound(Veri)
        If Veri(i, 1) >= Worksheets("TAKVİM").Range("J4") And Veri(i, 1) - 6 <= Worksheets("TAKVİM").Range("J4") Then
            Worksheets("PROGRAMLAR").Rows(i + 2).Font.Color = vbRed
            Say = Say + 1
            Liste(Say, 1) = Veri(i, 1)
            Liste(Say, 2) = Veri(i, 2)
        End If
    Next i
    Worksheets("TAKVİM").Range("L5").Resize(Say, 2) = Liste
    Erase Liste
End Sub
 

Sefa.N

Altın Üye
Katılım
21 Şubat 2009
Mesajlar
52
Excel Vers. ve Dili
2016 ProPlus Türkçe
Altın Üyelik Bitiş Tarihi
20-10-2026
Bu düzenleme ile her şey harika oldu. Tekrardan teşekkür ederim size.

Aklıma gelmişken bu çalışmayla ilgili olarak kafamı kurcalamaya başlayan bir soruyu da yanıtlayabilirseniz müteşekkir olurum.

Olur da çalışma kitabımdaki sayfaların adlarını değiştirmem gerekirse, herhangi bir sıkıntı yaşamamak için module 1 içerisindeki kodlarda, sayfa isimlerini Ctrl+H ile yenisi ile güncellemem yeterli olur mu yoksa ne olursa olsun sayfa ismi değişikliğine gitmemem mi en sağlıklısı olur?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Hem Module1 hem de ThisWorkBook kısmında değiştirmelisiniz.
 

Sefa.N

Altın Üye
Katılım
21 Şubat 2009
Mesajlar
52
Excel Vers. ve Dili
2016 ProPlus Türkçe
Altın Üyelik Bitiş Tarihi
20-10-2026
Dün kontrol ettiğimde ya adam akıllı deneyip bunu fark etmemişim ya da farkında olmadan bir yerlerde yanlış bir şey yapıyorum. Bugün kullanım için reel verileri girmeye başladığımda şu sıkıntıyı fark ettim;

20 Aralık'a ait 3 adet örnek giriş olmasına rağmen, J sütununda 3 adet giriş görünüyor ancak hepsi tek bir giriyi gösteriyor. Diğer ikisi ortalıkta yok. M sütunundaki haftalık listede ise bugüne ait girilerin üçü de yer almakta. Deneme maksatlı olarak 3 Ocak tarihine de 20 taneye yakın farazi kayıt oluşturdum, onlarda da J sütununda aynı sıkıntı söz konusu, hepsinde tek bir kaydı listeliyor. Bu sıkıntıyı nasıl çözebilirim?

---

Bir de bu ajandayı tasarlamaya çalışırken öngöremediğim bir kullanım kolaylığı daha gerekli oldu (üşengeç mesai arkadaşlarım sağ olsun). Takvimdeki kaydırma çubukları ile yılı ya da ayı değiştirdikten sonra takvimin altına eklediğim "Bugün'ü göster" tuşuna basıldığında bugünün yer aldığı yıl ve ay bilgilerine dönülmesini sağlayacak makro kodu hususunda yardımcı olabilir misiniz? Şöyle örneklendireyim; Takvimi 2023'ün Haziran'ına (veya 2018'in Mayıs'ına) ayarlayan, takvimin altındaki tuşa basıp takvimi tekrardan 2021'in Aralık ayına (ya da bugün hangi yılın hangi ayının hangi günü ise) çevirecek.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
İlk sorunuz için, Module 1 içindeki DailyTask kodlarını aşağıdakiyle değiştirin
C++:
Sub DailyTask()
Dim Veri, Say As Integer, i As Long
    Worksheets("TAKVİM").Range("J5:J" & Rows.Count) = ""
    son = WorksheetFunction.CountA(Worksheets("PROGRAMLAR").Range("B:B")) + 1
    If son < 3 Then Exit Sub
    ReDim Liste(1 To 1)
    Veri = Worksheets("PROGRAMLAR").Range("B3:D" & son).Value
    For i = 1 To UBound(Veri)
        If Veri(i, 1) = Worksheets("TAKVİM").Range("J4") Then
            Say = Say + 1
            ReDim Preserve Liste(1 To Say)
            Liste(Say) = Veri(i, 2)
        End If
    Next i
    If Say > 0 Then Worksheets("TAKVİM").Range("J5").Resize(Say) = Application.Transpose(Liste)
    Erase Liste
End Sub
İkinci sorunuz için, Module 1 içine aşağıdaki kodu ekleyin BUGÜN butonuna atayın.
C++:
Sub TodayShow()
    With Worksheets("TAKVİM")
        .[B2] = Year(Date)
        .[A1] = Month(Date)
        .Range("A5").Offset(Int((Day(Date) - 1 + WorksheetFunction.Weekday(DateSerial(Year(Date), Month(Date), 1), 2)) / 7), WorksheetFunction.Weekday(Date, 2)).Select
    End With
End Sub
 

Sefa.N

Altın Üye
Katılım
21 Şubat 2009
Mesajlar
52
Excel Vers. ve Dili
2016 ProPlus Türkçe
Altın Üyelik Bitiş Tarihi
20-10-2026
ÖmerFaruk bey, size ne kadar teşekkür etsem az gelir. 2 gündür sizi fazlasıyla meşgul ettim, hakkınızı helal edin. Bu vesile ile, bu çalışmanın başlangıç adımlarını atmama olanak tanıyan Ömer Bey'e de tekrardan teşekkür etmem gerekli. Başarılı ve sağlıklı bir hayat dilerim sizlere.

Bu arada, altın üye olmayan forum üyeleri için, çalışmanın son haline ait harici linki aşağıya bırakıyorum. Belki doğrudan belki de üzerinde çeşitli düzenlemeler yaparak kullanmak isteyen olursa, bir faydam dokunmuş olsun.

 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın ÖmerFaruk Arkadaşım,
WeeklyTask makrosu J4 te bulunan tarihin olduğu haftadakileri göstermesi için hangi satırda değişiklik gerekir. Şu anda J4 ile J4+6 tarihleri arasındakileri gösteriyor.
Saygılarımla
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sayın @Tevfik_Kursun,
Kod içinde Hafta ve Haftam isimli iki değişken oluşturdum. Bunları inceleyebilirsiniz.

C++:
Sub WeeklyTask2()
Dim Veri, Say As Integer, i As Long
    Worksheets("TAKVİM").Range("L5:M" & Rows.Count) = ""
    son = WorksheetFunction.CountA(Worksheets("PROGRAMLAR").Range("B:B")) + 1
    If son < 3 Then Exit Sub
    ReDim Liste(1 To son - 2, 1 To 2)
    Veri = Worksheets("PROGRAMLAR").Range("B3:D" & son).Value
    Haftam = Year(Worksheets("TAKVİM").Range("J4")) & "-" & WorksheetFunction.WeekNum(Worksheets("TAKVİM").Range("J4"), 21)
    For i = 1 To UBound(Veri)
        Hafta = Year(Veri(i, 1)) & "-" & WorksheetFunction.WeekNum(Veri(i, 1), 21)
        If Hafta = Haftam Then
            Worksheets("PROGRAMLAR").Rows(i + 2).Font.Color = vbRed
            Say = Say + 1
            Liste(Say, 1) = Veri(i, 1)
            Liste(Say, 2) = Veri(i, 2)
        End If
    Next i
    Worksheets("TAKVİM").Range("L5").Resize(Say, 2) = Liste
    Erase Liste
End Sub
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın ÖmerFaruk Arkadaşım,
İlginize çok teşekkür ederim. Düşündüğüm oldu ama L8 den itibaren listede yalpalama oluyor. Neden olabilir?
Saygılarımla
 

Sefa.N

Altın Üye
Katılım
21 Şubat 2009
Mesajlar
52
Excel Vers. ve Dili
2016 ProPlus Türkçe
Altın Üyelik Bitiş Tarihi
20-10-2026
Büyük ihtimalle L sütununun hizalama seçenekleri yüzündendir. Şablonu oluştururken o kadar teferruata girmeden bir kaç satır için hizalama yapmıştım, L sütununu seçip tercih ettiğiniz şekilde hizalayabilirsiniz.
 
Son düzenleme:

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Evet ben de aynı şeyi düşündüm ve oldu.
Hepimize iyi çalışmalar
 

gy121

Altın Üye
Katılım
21 Ekim 2012
Mesajlar
124
Excel Vers. ve Dili
Microsoft Office Professional Plus 2016 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
05-04-2025
Dosyanın son halini siteye yükleyebilirseniz herkes yararlanır. Saygılarımla.
 
Üst