• DİKKAT

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

Tarihten 3 gün önce ve tarih geldiğinde uyarı versin.

Katılım
21 Şubat 2008
Mesajlar
10
Excel Vers. ve Dili
Excel 2003 English
Selamlar arkadaşlar ve üstadlar,

Periyodik bakım ile ilgili bir takvimim var. Bakım zamanından 3 gün önce ve tarih geldiğinde excel beni uyarsın istiyorum. Ama bunu koşullu biçimlendirme ile yapmak istemiyorum. Uyarı yazısı çıksın istiyorum. Diğer bütün konuları okudum ancak bu kodu nasıl yazacağımı bilemediğim için yardım talep etmekteyim.

Takvimimde direkt tarih yazmıyor. Ocak ayı içinde günler 1 2 3 4 5 6 şeklinde yazılmış durumda. mesela 4 ocak için 4 sayısının yazdığı hücreye bir macro kodu yazıp 1 inde ve 4 ünde beni uyarması sağlanabilir mi?

Bu mümkün değilse yalnızca 4 ünde uyarması için ne yapmalıyım?
Yardımcı olursanız çok sevinirim.
 
Sn lovehippi

Örnek dosya eklerseniz yardım eden olur mutlaka.
 
Ekte istediğim şekli detaylı bir biçimde anlattım ve Ocak ayı için bir takvim örneği koydum. İnceleyip yardımcı olursanız çok müteşekkir olurum.
 
merhaba
koşullu biçimlendirme ile olmasın demişsiniz ama...
 
merhaba
koşullu biçimlendirme ile olmasın demişsiniz ama...

İlginiz için teşekkür ederim. Ama dediğim gibi macro olarak yani uyarı mesajıyla bunu yapabilirseniz çok memnun olurum. 3 gün önceden uyarı da şart değil aslına bakarsanız, yani tek uyarı mesajı da olabilir. "Bugün bakım var" ya da "yarın bakım var" şeklinde. Değişkenlerimin çok olması kodu zorlaştıracaktır; daha sade haliyle de isteğime uygun olan bir kod yazılabilir acaba..
 
Merhaba,

1 den 31 e kadar rakamların olduğu bir tablo var sadece. Hangi gün bakım olduğu nasıl anlaşılacak?
 
Yanıt

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim DEG As Range
Application.EnableEvents = False
For Each DEG In Range("C4:AG4")
If DEG = [B2] Then
DEG.Select
End If
Next
If ActiveCell = 5 Then: MsgBox "Üç Gün Sonra Bakım Var"
If ActiveCell = 8 Then: MsgBox "Bugün Bakım Günü"
If ActiveCell = 13 Then: MsgBox "Bugün Bakım Günü"
If ActiveCell = 18 Then: MsgBox "Bugün Bakım Günü"
Application.EnableEvents = True
End Sub
 
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim DEG As Range
Application.EnableEvents = False
For Each DEG In Range("C4:AG4")
If DEG = [B2] Then
DEG.Select
End If
Next
If ActiveCell = 5 Then: MsgBox "Üç Gün Sonra Bakım Var"
If ActiveCell = 8 Then: MsgBox "Bugün Bakım Günü"
If ActiveCell = 13 Then: MsgBox "Bugün Bakım Günü"
If ActiveCell = 18 Then: MsgBox "Bugün Bakım Günü"
Application.EnableEvents = True
End Sub

istediğim kod buna benzer bir şey sanıyorum. Ancak burada 23 hücresinden başka bir hücre seçilememekte. Tam olarak çalışmıyor sanırım. Dilerseniz Şubat ayı olarak da değiştirebiliriz takvimi. Sorunun tam olarak nerede olduğunu bilememekle beraber teşekkür ediyor, ilginizin devamını diliyorum.
 
Yanıt

Günlerin olduğu hücrelere tıklandığında kod çalışacaktır. Gün uyarı vermek istediğiniz günde ise bir uyarı penceresi ile uyarı alcaksınız.
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[COLOR="Blue"]If Intersect(Target, [C3:AG4]) Is Nothing Then Exit Sub[/COLOR]
Dim DEG As Range
Application.EnableEvents = False
For Each DEG In Range("C4:AG4")
If DEG = [B2] Then
DEG.Select
End If
Next
If ActiveCell = 5 Then: MsgBox "Üç Gün Sonra Bakım Var"
If ActiveCell = 8 Then: MsgBox "Bugün Bakım Günü"
If ActiveCell = 13 Then: MsgBox "Bugün Bakım Günü"
If ActiveCell = 18 Then: MsgBox "Bugün Bakım Günü"
Application.EnableEvents = True
End Sub
 
Günlerin olduğu hücrelere tıklandığında kod çalışacaktır. Gün uyarı vermek istediğiniz günde ise bir uyarı penceresi ile uyarı alcaksınız.
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[COLOR="Blue"]If Intersect(Target, [C3:AG4]) Is Nothing Then Exit Sub[/COLOR]
Dim DEG As Range
Application.EnableEvents = False
For Each DEG In Range("C4:AG4")
If DEG = [B2] Then
DEG.Select
End If
Next
If ActiveCell = 5 Then: MsgBox "Üç Gün Sonra Bakım Var"
If ActiveCell = 8 Then: MsgBox "Bugün Bakım Günü"
If ActiveCell = 13 Then: MsgBox "Bugün Bakım Günü"
If ActiveCell = 18 Then: MsgBox "Bugün Bakım Günü"
Application.EnableEvents = True
End Sub

İlginiz için tekrar teşekkür ederim. Ancak ben yanlış anlattım sanırım. Hücreye tıkladığımda değil de excel açıldığında beni uyarabilir mi? Yani 23 ündeyse 23 ün bulunduğu hücreye tıklamam gerekmesin, açılır açılmaz 20 sinde açıyorsam 3 gün sonra bakım var desin, 23 ünde isek bugün bakım var desin. Böyle bir şey mümkün mü?
 
Merhaba,

Nasıl yapmak istediğinizi tam olarak anlamamakla birlikte :

C5:AG11 aralığına koşullu biçimlendirme yaptım. Bu hücrelere "X" koyduğunuzda renk kırmızıya dönüşecektir. Bu o tarihte bakım olduğunun işaretidir.

Tarihleri formülleştirdim.

Son olarak ta, Dosya açıldığında o gün ve o günden 3 gün sonra bakımı olacak malzemenin listesini vermektedir.

Kodlar ThisWorkbook'un sayfasındadır.

Kod:
Private Sub Workbook_Open()
Dim Bilgi1 As String, Bilgi2 As String
Dim i As Integer, j As Integer, Adet1 As Integer, Adet2 As Integer
Bilgi1 = Format(Date, "dd.mm.yyyy") & " Bakım Olanlar" & vbCrLf & vbCrLf
Bilgi2 = Format(Date + 3, "dd.mm.yyyy") & " Bakım Olacaklar" & vbCrLf & vbCrLf
Adet1 = 0
Adet2 = 0
Sheets("Sheet1").Select
j = Day(Date) + 2
For i = 5 To [A65536].End(3).Row
    If Cells(i, j) <> "" Then
        Adet1 = Adet1 + 1
        Bilgi1 = Bilgi1 & vbCrLf & Cells(i, "A")
    End If
    
    If Cells(i, j + 3) <> "" Then
        Adet2 = Adet2 + 1
        Bilgi2 = Bilgi2 & vbCrLf & Cells(i, "A")
    End If
Next i
    If Adet1 > 0 Then MsgBox Bilgi1
    If Adet2 > 0 Then MsgBox Bilgi2
    If Adet1 = 0 And Adet2 = 0 Then MsgBox "Bugün ve 3 Gün Sonra Bakım Yok...."
End Sub
 
Necdet Bey Merhabalar,

Yardımlarınız için teşekkür ederim. Yapmak istediğim, aslında Ziya Bey'in yazdığı koda oldukça benziyor. Kendisi orada hücreye yani örneğin 5 e basınca 8'inde bakım olduğunu uyarıyor; 8'e basında "bugün bakım var" diyor. Benim istediğim ise excel açılır açılmaz eğer tarih 5 ocak ise "3 gün sonra bakım var" msgbox i ciksin, eğer tarih 8'i ise açılır açılmaz "bugün bakım var" yazsın. Bu işlemi Ocak, Şubat, Mart, vs. her ay için 3-4 bakım olacağından sık sık yapacağım tabii. Umarım anlatabilmişimdir. Anlatabildiysem yardımlarınızı bekliyorum.

Merhaba,

Nasıl yapmak istediğinizi tam olarak anlamamakla birlikte :

C5:AG11 aralığına koşullu biçimlendirme yaptım. Bu hücrelere "X" koyduğunuzda renk kırmızıya dönüşecektir. Bu o tarihte bakım olduğunun işaretidir.

Tarihleri formülleştirdim.

Son olarak ta, Dosya açıldığında o gün ve o günden 3 gün sonra bakımı olacak malzemenin listesini vermektedir.

Kodlar ThisWorkbook'un sayfasındadır.

Kod:
Private Sub Workbook_Open()
Dim Bilgi1 As String, Bilgi2 As String
Dim i As Integer, j As Integer, Adet1 As Integer, Adet2 As Integer
Bilgi1 = Format(Date, "dd.mm.yyyy") & " Bakım Olanlar" & vbCrLf & vbCrLf
Bilgi2 = Format(Date + 3, "dd.mm.yyyy") & " Bakım Olacaklar" & vbCrLf & vbCrLf
Adet1 = 0
Adet2 = 0
Sheets("Sheet1").Select
j = Day(Date) + 2
For i = 5 To [A65536].End(3).Row
    If Cells(i, j) <> "" Then
        Adet1 = Adet1 + 1
        Bilgi1 = Bilgi1 & vbCrLf & Cells(i, "A")
    End If
    
    If Cells(i, j + 3) <> "" Then
        Adet2 = Adet2 + 1
        Bilgi2 = Bilgi2 & vbCrLf & Cells(i, "A")
    End If
Next i
    If Adet1 > 0 Then MsgBox Bilgi1
    If Adet2 > 0 Then MsgBox Bilgi2
    If Adet1 = 0 And Adet2 = 0 Then MsgBox "Bugün ve 3 Gün Sonra Bakım Yok...."
End Sub
 
Merhaba,

Birde şunu deneyin

Kod:
Private Sub Workbook_Open()
Sheets("Sheet1").Select
j = Day(Date) + 2
If Cells(5, j) <> "" Then MsgBox "Bugün Bakım Var"
If Cells(5, j + 3) <> "" Then MsgBox "3 Gün Sonra Bakım Var"
End Sub
 
Merhaba,

Birde şunu deneyin

Kod:
Private Sub Workbook_Open()
Sheets("Sheet1").Select
j = Day(Date) + 2
If Cells(5, j) <> "" Then MsgBox "Bugün Bakım Var"
If Cells(5, j + 3) <> "" Then MsgBox "3 Gün Sonra Bakım Var"
End Sub

Sanıyorum istediğim şekle çok yaklaştık. Ancak bu kodun mantığını bana anlatırsanız çok sevinirim. Çünkü zaman içinde değiştirmem, eklemem gerekecektir. j neyi ifade ediyor? 23'ünde yani bugün bakım olacağını ne ifade ediyor da dosyayı açınca "bugün bakım var" yazıyor? mesela şubat ayının 11,13,18,20 ve 25 i için "3 gün sonra" değil de "yarın bakım var" ve "bugün bakım var" şeklinde kodunu yazabilir misiniz açıklayarak?

Yorduğumu ve çok şey istediğimi biliyorum. Yine de nacizane yardımlarınızı beklemekteyim. Saygılar.
 
Merhaba,

Tarihin hemen altına "Hat 2 Bakım Duruşu" yazılacak mesela. Örneğin 20 Ocakta olacaksa 20 sayısının hemen altına.


İlgili günün altına ne yapılacağını yazacağınızı söylediniz. Ben de örnek dosyada bunu X'lerle ifade etmeye çalıştım.

Kod:
Private Sub Workbook_Open()
Sheets("Sheet1").Select
j = Day(Date) + 2
If Cells(5, j) <> "" Then MsgBox "Bugün Bakım Var"
If Cells(5, j + 3) <> "" Then MsgBox "3 Gün Sonra Bakım Var"
End Sub

Kod içinde kullanılan j değeri hangi sütuna bakılacağını göstermesi içindir. Gönderdiğiniz örnek dosyada ayın 1. günü C sütununda yani 3. sütun.

Dolayısıyla içinde bulunduğumuz ayın günü örneğin 2 ise bakılacak sütun 2+2 yani 4. sütun olacaktır. Gün 1 ise 1+2 =3 olacağından 3. sütun yani C sütununa bakılacaktır. cells(5, j) deki 5 in anlamı ise 5. satır demektir.

Siz içinde bulunduğumuz günün ertesi gününde de bakım var mı yok mu diye öğrenmeki stiyorsanız cells(5, j+3) kodundaki 3 yerine 1 diyebilirsiniz.

If komutunu çeşitlendirirsek 2 ayrı mesaj yerine tek mesaj verilebilir, olasılıkları kontrol etmek şartıyla.
 
Merhaba Necdet Bey,

Çok teşekkür ederim yeniden. Konuyu anladım. Ancak tarihi nasıl atadığımızı anlayamadım. Yani j yi tanımlarken neyi referans aldınız? Tam olarak anlayabilmem için kodu şubat ayının 11,13,18,20 ve 25 i için "bugün bakım var" uyarısı verecek şekilde değiştirebilir misiniz rica etsem?

Merhaba,

İlgili günün altına ne yapılacağını yazacağınızı söylediniz. Ben de örnek dosyada bunu X'lerle ifade etmeye çalıştım.

Kod:
Private Sub Workbook_Open()
Sheets("Sheet1").Select
j = Day(Date) + 2
If Cells(5, j) <> "" Then MsgBox "Bugün Bakım Var"
If Cells(5, j + 3) <> "" Then MsgBox "3 Gün Sonra Bakım Var"
End Sub

Kod içinde kullanılan j değeri hangi sütuna bakılacağını göstermesi içindir. Gönderdiğiniz örnek dosyada ayın 1. günü C sütununda yani 3. sütun.

Dolayısıyla içinde bulunduğumuz ayın günü örneğin 2 ise bakılacak sütun 2+2 yani 4. sütun olacaktır. Gün 1 ise 1+2 =3 olacağından 3. sütun yani C sütununa bakılacaktır. cells(5, j) deki 5 in anlamı ise 5. satır demektir.

Siz içinde bulunduğumuz günün ertesi gününde de bakım var mı yok mu diye öğrenmeki stiyorsanız cells(5, j+3) kodundaki 3 yerine 1 diyebilirsiniz.

If komutunu çeşitlendirirsek 2 ayrı mesaj yerine tek mesaj verilebilir, olasılıkları kontrol etmek şartıyla.
 
Merhaba,

Aslında benim tarihlerle bir ilgim hemen hemen yok. Sadece içinde bulunduğumuz tarihin Gün ünü alıyorum.

Sonra o gün koduna göre ilgili hücreyi bulup herhangi bir bilgi var mı diye bakıyorum. Bilgi varsa bakım var mesajını verdiriyorum. Yani işin mantığı kolay.

Asıl ben sizin ne yapmak istediğinizi tam olarak anlamadım. Neden Aylık düşünüyorsunuz da yıllık düşünmüyorsunuz?

Ekli dosyada ilili gün rakamlarının altına bir takım açıklamalar yazdım. Araba, motorsiklet, bisiklet, buzdolabı vs gibi ve o güne denk geliyorsa onun bakımı var diyor, yani hücrede yazılan bilgiyi de mesajın içine koydum. Sanırım artık konuyu anlamış olursunuz.
 
Merhabalar Necdet Bey,

Yurtdışında olduğum için bakamadım siteye. İlginiz için teşekkür ederim. Ne yapmak istediğimi size yeniden anlatayım çünkü bana çok açık şekilde anlatmış olsanız da ben istediğim hale getirmeyi beceremedim.

Elimde bir takvim var. Ekte o takvimi de yolluyorum. Bu takvime göre biz her ay bir sonraki ayın bakım duruşlarını belirliyoruz. Mesela Ocak ayında iken Şubat ayının 11,13,18,20,25'i günlerinde bakım yapmayı kararlaştırıyoruz. Ben de diyorum ki bu durumda, mesela 11'inden 1 gün önce haber versin bana. Yani 10 Şubatta "yarın bakım var" desin. 12'sinde "yarın bakım var" desin gibi. Kullanacağım takvim tam olarak ekteki gibidir ve yıllıktır. Şimdi burada ben her ay bakım duruş tarihleri belli olunca bir sonraki ay için istediğim gibi bir uyarı yapabilir miyim yapamaz miyim?

Merhaba,

Aslında benim tarihlerle bir ilgim hemen hemen yok. Sadece içinde bulunduğumuz tarihin Gün ünü alıyorum.

Sonra o gün koduna göre ilgili hücreyi bulup herhangi bir bilgi var mı diye bakıyorum. Bilgi varsa bakım var mesajını verdiriyorum. Yani işin mantığı kolay.

Asıl ben sizin ne yapmak istediğinizi tam olarak anlamadım. Neden Aylık düşünüyorsunuz da yıllık düşünmüyorsunuz?

Ekli dosyada ilili gün rakamlarının altına bir takım açıklamalar yazdım. Araba, motorsiklet, bisiklet, buzdolabı vs gibi ve o güne denk geliyorsa onun bakımı var diyor, yani hücrede yazılan bilgiyi de mesajın içine koydum. Sanırım artık konuyu anlamış olursunuz.
 
Merhaba,

Büyük olasılıkla yine anlaşamayacağız ama, ben birşeyler yapmaya çalıştım.

"Bakım Takvimi 2008" sayfasında hangi tarihin hangi günlerinde bakım varsa önceden gün kodunun altına bir şeyler yazıyorsunuz, örneğin "x" koyuyorsunuz (Mantığı böyle kurdum).

Makro ilgili ayın ilgili gününde eğer dolu hücre bulursa mesajı veriyor ve ilgili sayfayının ilgili hücrelerini seçiyor.

Birleştirilmiş hücreler olduğu için midir ki "find" komutunu kullanamadım, yada beceremedim. O yüzden döngülerle çözüme gittim.
 
Geri
Üst