Belirli Saat Aralıklarında Mesaj Uyarısı Alma

Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
Herkese Merhaba,

Ekteki dosyamda K3 hücresi; H ve O sütunlularına aylar bazında ( sadece O sütununda ocak ayı hariç) saat verileri girildikçe Q2+Q5 hücrelerinin toplamını almakta ve diğer ay sayfalarında kümülatif toplam vermektedir.

Benim burada yapmak istediğim; herhangi bir ayda K3 hücresine "uyarı mesajları" isimli sayfadaki geçen yazılı saat yada tarihler denk geldiğinde , "uyarı mesajları" isimli sayfadaki listede geçen saatlerin yada tarihlerin yazılı olduğu sıra satırında yazılı olan uyarıları vermesi. Ve bu uyarıyı sayfaya geçildiğinde veya çalışma kitabı açıldığında yapabilmesidir.

Kriterleri makro içerisine direk yazmak yerine son sayfada listelememin sebebi;

1-Bir liste içerisinde takip edebilmek
2-Macro içerisinde yazıp düzeltmek yerine liste üzerinde düzeltme ve takip yapmak,
3- Bir başkasının macro içerisinde müdahale etmesini engellemek.
4-Tek tek makroları düzeltmek yerine listede düzeltme yapmak vb.

Not: Tek bir saat yada tarih yazmıyor olmamızın amacı hatırlatmayı bir kaç kere yapmak amaçlıdır. Aksi taktirde uyarı saat bir kez aşıldığında gerçekleşecektir.

Örnek Vermem Gerekirse:

3728:00 - 3729:00 saatleri arasında

234266

Buna benzer birim durumu veri doğrulama adı altında başlık açarak tartışmıştık ancak bu konu biraz daha karmaşık olduğundan farklı bir başlık adı altında açmak istedim.

Umarım yanlış bir şey yapmamışımdır.

Yardımlarınız için şimdiden çok teşekkür eder, iyi çalışmalar dilerim.

Syg,
 

Ekli dosyalar

Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
Merhaba,

Yardımcı olabilecek birileri var mıdır ?

Syg,
 
Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
Tekrar Merhaba,

Yardımcı olabilecek birileri var mıdır ?

Syg,
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Aşağıdaki kodu VBA penceresinde ThisWorkbook ya da Bu Çalışma Kitabı bölümüe aynen yapıştırın.
C++:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If ActiveSheet.Name = "UYARI MESAJLARI" Or ActiveSheet.Name = "REPORT" Then Exit Sub
    If IsError(Range("K3")) Then Exit Sub
    Zaman = Range("K3").Value
    Veri = Worksheets("UYARI MESAJLARI").Range("A3:F8").Value
    For i = 1 To UBound(Veri)
        If Veri(i, 6) >= Zaman And Veri(i, 5) <= Zaman Then
            Mesaj = Veri(i, 2) & Chr(10) & Veri(i, 3) & Chr(10) & Veri(i, 4)
            MsgBox Mesaj, vbInformation
            Exit Sub
        End If
    Next i
End Sub
234303
 
Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
Aşağıdaki kodu VBA penceresinde ThisWorkbook ya da Bu Çalışma Kitabı bölümüe aynen yapıştırın.
C++:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If ActiveSheet.Name = "UYARI MESAJLARI" Or ActiveSheet.Name = "REPORT" Then Exit Sub
    If IsError(Range("K3")) Then Exit Sub
    Zaman = Range("K3").Value
    Veri = Worksheets("UYARI MESAJLARI").Range("A3:F8").Value
    For i = 1 To UBound(Veri)
        If Veri(i, 6) >= Zaman And Veri(i, 5) <= Zaman Then
            Mesaj = Veri(i, 2) & Chr(10) & Veri(i, 3) & Chr(10) & Veri(i, 4)
            MsgBox Mesaj, vbInformation
            Exit Sub
        End If
    Next i
End Sub
Ekli dosyayı görüntüle 234303
Merhaba,

Kodu uyguladım ve doğru sonucu aldım. Teşekkür ederim.

Yalnız tek bir problem var; veri girişi yapılırken K3 hücresindeki değer değiştiği anda uyarıyı vermiyor. Uyarıyı ancak sayfa değiştirip tekrar geri geldiğinizde görüyorsunuz.

Mesela kodu uyguladıktan sonra February sayfasında H sütunundaki saatleri silip tekrar geri yazdığınızda bunu görebilirsiniz. Saatleri yazdıktan sonra K3 hücresindeki değer değişse de uyarı vermiyor. Başka bir sayfaya geçtiğinizde yada geçip geri geldiğinizde çıkıyor.


Syg,
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Siz ilk mesajınızda aşağıdaki gibi demiştiniz.
"Ve bu uyarıyı sayfaya geçildiğinde veya çalışma kitabı açıldığında yapabilmesidir."

Ben de bu prosedürün içine yazdım.
Arzu ediyorsanız aynı kodları sayfa içinde H sütununda değişiklik yaptığınızda da çalışmasını istiyorsanız, aynı VBA penceresine aşağıdaki kodları da yapıştırın. Eskisi dursun yerinde.

C++:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If ActiveSheet.Name = "UYARI MESAJLARI" Or ActiveSheet.Name = "REPORT" Then Exit Sub
    If IsError(Range("K3")) Then Exit Sub
    If Intersect(Target, Range("H:H")) Is Nothing Then Exit Sub
    Zaman = Range("K3").Value
    Veri = Worksheets("UYARI MESAJLARI").Range("A3:F8").Value
    For i = 1 To UBound(Veri)
        If Veri(i, 6) >= Zaman And Veri(i, 5) <= Zaman Then
            Mesaj = Veri(i, 2) & Chr(10) & Veri(i, 3) & Chr(10) & Veri(i, 4)
            MsgBox Mesaj, vbInformation
            Exit Sub
        End If
    Next i
End Sub
 
Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
Ömer Hocam Merhaba,

Kodlar saatlerde sorunsuz çalışıyor. Ellerinize sağlık. Ancak tarihlerde uyarı vermedi.

Uyarı mesajı listesindeki tarihe dayalı satır bilgilerden birini "alt sınır 17.02.2022 - Üst sınır 18.02.2022" olacak şekilde değiştirdim ancak çalışmadı.

Syg,
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Tarihle ilgili bir işlem yapmadım.
Nedeni ise isteğinize anlam veremedim.
Şöyleki verdiğini Uyarı Mesajları sayfasında saatlerin sayısal karşılığı ile Tarih sütunundakilerin sayısal karşılığı birbirinden çok uzak.
K3 hücrelerinizde yazan değeri kıyasladığımız Uyarı mesajları sayfanızdaki
3728:00 saat için 155,33 sayısal değerine denk gelirken
01.06.2022 tarihi 44.713 sayısına karşılık gelmektedir. Bunun da saat:dakika formatında karşılığı 1.073.112:00 dır.

Siz K3 hücresine böyle bir şey mi yazacaksınız?
 
Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
Tarihle ilgili bir işlem yapmadım.
Nedeni ise isteğinize anlam veremedim.
Şöyleki verdiğini Uyarı Mesajları sayfasında saatlerin sayısal karşılığı ile Tarih sütunundakilerin sayısal karşılığı birbirinden çok uzak.
K3 hücrelerinizde yazan değeri kıyasladığımız Uyarı mesajları sayfanızdaki
3728:00 saat için 155,33 sayısal değerine denk gelirken
01.06.2022 tarihi 44.713 sayısına karşılık gelmektedir. Bunun da saat:dakika formatında karşılığı 1.073.112:00 dır.

Siz K3 hücresine böyle bir şey mi yazacaksınız?
Merhaba,

Aslında oradaki açıklamayı eksik yapmışım. Benim hatam. Tarihlere dayalı uyarılar herhangi bir hücreye bağımlı olmayacak. Çalışma kitabını açtığımız tarihte diyebiliriz. Yani kodlaması nasıl hangi mantıkla yapılır bilemiyorum tabii ki. Ama uyarılar listede belirtilen alt üst sınır tarihlerine göre çıkmalıdır.

Yardımlarınız için teşekkürler.

Syg.
 
Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
Tekrar Merhaba,

Bakabilme şansınız oldu mu acaba ?

Syg,
 
Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
Merhaba,

Yardımcı olabilecek birileri var mıdır ?

Syg,
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Öncekileri kullanmayacağız.
Onları silin ve aşağıdakileri oraya yapıştırın
C++:
Private Sub Workbook_Open()
    Dim Veri, i As Integer
    Veri = Worksheets("UYARI MESAJLARI").Range("A3:H" & Worksheets("UYARI MESAJLARI").Range("A" & Rows.Count).End(3).Row).Value
    For i = 1 To UBound(Veri)
        If Veri(i, 7) <> "" And Veri(i, 8) <> "" And Veri(i, 8) >= Date And Veri(i, 7) <= Date Then
            Mesaj = Veri(i, 2) & Chr(10) & Veri(i, 3) & Chr(10) & Veri(i, 4)
            MsgBox Mesaj, vbInformation
            Exit Sub
        End If
    Next i
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim Veri, Zaman As Date, i As Integer
    If ActiveSheet.Name = "UYARI MESAJLARI" Or ActiveSheet.Name = "REPORT" Then Exit Sub
    If IsError(Range("K3")) Then Exit Sub
    Zaman = Range("K3").Value
    Veri = Worksheets("UYARI MESAJLARI").Range("A3:H" & Worksheets("UYARI MESAJLARI").Range("A" & Rows.Count).End(3).Row).Value
    For i = 1 To UBound(Veri)
        If Veri(i, 5) <> "" And Veri(i, 6) <> "" And Veri(i, 6) >= Zaman And Veri(i, 5) <= Zaman Then
            Mesaj = Veri(i, 2) & Chr(10) & Veri(i, 3) & Chr(10) & Veri(i, 4)
            MsgBox Mesaj, vbInformation
            Exit Sub
        End If
    Next i
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If ActiveSheet.Name = "UYARI MESAJLARI" Or ActiveSheet.Name = "REPORT" Then Exit Sub
    If IsError(Range("K3")) Then Exit Sub
    If Intersect(Target, Range("H:H")) Is Nothing Then Exit Sub
    Zaman = Range("K3").Value
    Veri = Worksheets("UYARI MESAJLARI").Range("A3:F8").Value
    For i = 1 To UBound(Veri)
        If Veri(i, 6) >= Zaman And Veri(i, 5) <= Zaman Then
            Mesaj = Veri(i, 2) & Chr(10) & Veri(i, 3) & Chr(10) & Veri(i, 4)
            MsgBox Mesaj, vbInformation
            Exit Sub
        End If
    Next i
End Sub
 
Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
Öncekileri kullanmayacağız.
Onları silin ve aşağıdakileri oraya yapıştırın
C++:
Private Sub Workbook_Open()
    Dim Veri, i As Integer
    Veri = Worksheets("UYARI MESAJLARI").Range("A3:H" & Worksheets("UYARI MESAJLARI").Range("A" & Rows.Count).End(3).Row).Value
    For i = 1 To UBound(Veri)
        If Veri(i, 7) <> "" And Veri(i, 8) <> "" And Veri(i, 8) >= Date And Veri(i, 7) <= Date Then
            Mesaj = Veri(i, 2) & Chr(10) & Veri(i, 3) & Chr(10) & Veri(i, 4)
            MsgBox Mesaj, vbInformation
            Exit Sub
        End If
    Next i
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim Veri, Zaman As Date, i As Integer
    If ActiveSheet.Name = "UYARI MESAJLARI" Or ActiveSheet.Name = "REPORT" Then Exit Sub
    If IsError(Range("K3")) Then Exit Sub
    Zaman = Range("K3").Value
    Veri = Worksheets("UYARI MESAJLARI").Range("A3:H" & Worksheets("UYARI MESAJLARI").Range("A" & Rows.Count).End(3).Row).Value
    For i = 1 To UBound(Veri)
        If Veri(i, 5) <> "" And Veri(i, 6) <> "" And Veri(i, 6) >= Zaman And Veri(i, 5) <= Zaman Then
            Mesaj = Veri(i, 2) & Chr(10) & Veri(i, 3) & Chr(10) & Veri(i, 4)
            MsgBox Mesaj, vbInformation
            Exit Sub
        End If
    Next i
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If ActiveSheet.Name = "UYARI MESAJLARI" Or ActiveSheet.Name = "REPORT" Then Exit Sub
    If IsError(Range("K3")) Then Exit Sub
    If Intersect(Target, Range("H:H")) Is Nothing Then Exit Sub
    Zaman = Range("K3").Value
    Veri = Worksheets("UYARI MESAJLARI").Range("A3:F8").Value
    For i = 1 To UBound(Veri)
        If Veri(i, 6) >= Zaman And Veri(i, 5) <= Zaman Then
            Mesaj = Veri(i, 2) & Chr(10) & Veri(i, 3) & Chr(10) & Veri(i, 4)
            MsgBox Mesaj, vbInformation
            Exit Sub
        End If
    Next i
End Sub
Hocam merhaba,

Saatler çalışıyor ancak tarihler çalışmadı. Yada ben beceremedim.

Uyarı mesajları sayfasında 10. satırdaki tarih aralıklarını 22.02.2022-23.02.2022 olarak değiştirmem rağmen çalışmadı.

Macroları düzeltilmiş dosya ektedir

Syg,
 

Ekli dosyalar

Üst