• DİKKAT

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

Şu Tarihte Bunu Yap: Kod Yardım

  • Konbuyu başlatan Konbuyu başlatan BedriA
  • Başlangıç tarihi Başlangıç tarihi
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Arkadaşlar,

Aşağıdaki kod ile şu tarih ve saatte "u1" hücresindeki sayıyı 1 artır komutu vermek istiyorum ama kod herhangi bir hata vermemesine rağmen çalışmıyor.


Yardımcı olur musunuz?

Kod:
Private Sub Workbook_Activate()
If Format(Now(), "dd.mm.yyyy hh:mm:ss") = "03.07.2017 11:01" Then
Sheets("MAYIS2017").Range("u1") = Sheets("MAYIS2017").Range("u1") + 1
End If
End Sub
 
Merhabalar. Formulde Eşittir kullanmışsınız o yüzden sorun oluyor.
Bu şekilde kod birebir aynı saatte dosyayı açtığınızda çalışır.

Aşağıdaki gibi büyüktür kullanırsanız kod aktif olur. Ama onda da şöyle bir sorun olacaktır. Her açtığınızda U1 hücresi bir artacaktır.
Eğer bu kontrol bir kereye mahsus yapılacaksa. Atıyorum ilk kontrolden sonra V1 hücresine x yazdırırsınız. V1 de x gördüğü zaman tekrar işlem yapmaz :)



Kod:
Private Sub Workbook_Activate()
If Sheets("MAYIS2017").Range("V1")<>"x" then 
If Format(Now(), "dd.mm.yyyy hh:mm:ss") > "03.07.2017 11:01" Then
Sheets("MAYIS2017").Range("u1") = Sheets("MAYIS2017").Range("u1") + 1
Sheets("MAYIS2017").Range("V1")="x"
End If
End If
End Sub
 
Bu kodda diyorsunuz ki

"sayfa aktifleştirildiği an eğer 03.07.2017 11:01 ise Mayıs sayfasının U1 hücresini 1 arttır"

Kodun işinizi görmesi için sayfanın tam etkinleştirildiği anın saniyesi saniyesine kodda belirtilen an olması gerekmektedir. Muhtemelen o anı hiç denk getiremezsiniz. Dakikayı tuttursanız bile saniyeyi tutturamazsınız.

İstediğinizin olması için sayfada sürekli çalışıp zamanı kontrol eden bir makro olması gerekir. Bu da kullanışlı olmaz.
 
Aşağıdaki kod ile "03.07.2017 12:22" tarih ve saatinden önce excel dosyasını açarsanız. Siz işlemlerinizi yaparken kod arka tarafta çalışmaya devam edecek. Belirtilen bu zaman geldiğinde hücrenin değeri bir artacaktır.

Tarihin kodun içinde gömülü olması ve sadece bir defa çalışacak olması pek kullanışlı değil. Tarih yerine sdece saat ve dakika kullanılsa ve excel dosyayı aıl olduğu sürece her gün o saat ve dakikada artsa daha mantıkı gibi.Yine de kullanım konusu size bağlı.

Kontrol ediniz.

Kod:
Public Const Pause = 5 '5 saniye
Public Const cagrilanmakro = "tarih_kontrol"

Sub Auto_Open()
    StartTimer
End Sub

Sub Auto_Close()
    StopTimer
End Sub

Sub StartTimer()
    bekleme = Now + TimeSerial(0, 0, Pause)
    Application.OnTime earliesttime:=bekleme, procedure:=cagrilanmakro, schedule:=True
End Sub

Sub tarih_kontrol()
    If Format(Now(), "dd.mm.yyyy hh:mm") = "03.07.2017 12:22" Then
        Sheets("MAYIS2017").Range("u1") = Sheets("MAYIS2017").Range("u1") + 1
        StopTimer
        Exit Sub
     End If
    StartTimer
End Sub

Sub StopTimer()
    On Error Resume Next
    Application.OnTime earliesttime:=bekleme, procedure:=cagrilanmakro, schedule:=False
End Sub
 
Son düzenleme:
Merhabalar. Formulde Eşittir kullanmışsınız o yüzden sorun oluyor.
Bu şekilde kod birebir aynı saatte dosyayı açtığınızda çalışır.

Aşağıdaki gibi büyüktür kullanırsanız kod aktif olur. Ama onda da şöyle bir sorun olacaktır. Her açtığınızda U1 hücresi bir artacaktır.
Eğer bu kontrol bir kereye mahsus yapılacaksa. Atıyorum ilk kontrolden sonra V1 hücresine x yazdırırsınız. V1 de x gördüğü zaman tekrar işlem yapmaz :)

Bu kod işe yaramadı.
u1 hücresi 1 artmadı.

Kod:
Private Sub Workbook_Activate()
If Sheets("MAYIS2017").Range("V1") <> "x" Then
If Format(Date, "dd") > "03" Then
Sheets("MAYIS2017").Range("u1") = Sheets("MAYIS2017").Range("u1") + 1
Sheets("MAYIS2017").Range("V1") = "x"
End If
End If
End Sub
 
">" yerine "=" yapınca, x değişkeni de atanınca işe yaradı.

Teşekkürler.
 
Sayın BedriA öncelikle rica ederim.

İlk gönderdiğiniz kodla sonra işlem yaptığınız kodlar farklı. İlk gönderdiğiniz kodda tarih ve saat karşılaştırması yaparken, sonraki kodunuzda, sadece tarihin gününü almışsınız ve karşılaştırma yapmışsınız.
Bugün ayı 3 olduğu için o yüzden büyüktür koşulu gerçekleşmemiş ve kod çalışmamış.

Bu kodu hangi amaçla kullanacağınızı bilmiyorum. Ama tabiri caizse = kullanmanız günü kurtarmak gibi olmuş.

Eğer bu kodu farklı dosyalarda kullanmayı düşünüyorsanız, bu şekilde çalıştırırsanız, o dosyaları da yarın ve daha sonraki günler açarsanız, eşittir koşulu gerçekleşmiyeceği için U1 hücresine yine işlem yapılmayacaktır.

Siz yine büyüktür koşulu ile, tarih saat karşılaştırması kullanın.
Hangi ay için kontrol yaptıracaksanız;
Tarih olarak o ayın birini ve saat olarak da mesai başlangıç saatini belirleyin.

İlgili ayın, herhangi bir gününde, (Ayın 2'si 3'ü 5'i vb.), dosya ilk açıldığı zaman U1 hücresini arttırsın.


">" yerine "=" yapınca, x değişkeni de atanınca işe yaradı.

Teşekkürler.
 
Sayın asri sizin çözümünüz de, söylediğiniz kullanım amacı için, gayet iyi olmuş..
Aklımın bir köşesinde dursun. Benzer bir kullanım ihtiyacım olduğunda, bu kodlarınızı alıp kullanırım. :)
 
Sayın BedriA öncelikle rica ederim.

İlk gönderdiğiniz kodla sonra işlem yaptığınız kodlar farklı. İlk gönderdiğiniz kodda tarih ve saat karşılaştırması yaparken, sonraki kodunuzda, sadece tarihin gününü almışsınız ve karşılaştırma yapmışsınız.
Bugün ayı 3 olduğu için o yüzden büyüktür koşulu gerçekleşmemiş ve kod çalışmamış.

Bu kodu hangi amaçla kullanacağınızı bilmiyorum. Ama tabiri caizse = kullanmanız günü kurtarmak gibi olmuş.

Eğer bu kodu farklı dosyalarda kullanmayı düşünüyorsanız, bu şekilde çalıştırırsanız, o dosyaları da yarın ve daha sonraki günler açarsanız, eşittir koşulu gerçekleşmiyeceği için U1 hücresine yine işlem yapılmayacaktır.

Siz yine büyüktür koşulu ile, tarih saat karşılaştırması kullanın.
Hangi ay için kontrol yaptıracaksanız;
Tarih olarak o ayın birini ve saat olarak da mesai başlangıç saatini belirleyin.

İlgili ayın, herhangi bir gününde, (Ayın 2'si 3'ü 5'i vb.), dosya ilk açıldığı zaman U1 hücresini arttırsın.

Çok sağolun. İşin mantığını kaptım.
Şimdilik dediğiniz gibi günü kurtardım.
Gerçi gün değil, ayın henüz başında olduğumuz da hesaba katılırsa, 3 ayı kurtardım.

Dünya fani olduğu için sonsuz döngüye sokmaya gerek yok. :)

Tekrar teşekkür ederim.
 
Aşağıdaki kod ile "03.07.2017 12:22" tarih ve saatinden önce excel dosyasını açarsanız. Siz işlemlerinizi yaparken kod arka tarafta çalışmaya devam edecek. Belirtilen bu zaman geldiğinde hücrenin değeri bir artacaktır.

Tarihin kodun içinde gömülü olması ve sadece bir defa çalışacak olması pek kullanışlı değil. Tarih yerine sdece saat ve dakika kullanılsa ve excel dosyayı aıl olduğu sürece her gün o saat ve dakikada artsa daha mantıkı gibi.Yine de kullanım konusu size bağlı.

Kontrol ediniz.

Kod:
Public Const Pause = 5 '5 saniye
Public Const cagrilanmakro = "tarih_kontrol"

Sub Auto_Open()
    StartTimer
End Sub

Sub Auto_Close()
    StopTimer
End Sub

Sub StartTimer()
    bekleme = Now + TimeSerial(0, 0, Pause)
    Application.OnTime earliesttime:=bekleme, procedure:=cagrilanmakro, schedule:=True
End Sub

Sub tarih_kontrol()
    If Format(Now(), "dd.mm.yyyy hh:mm") = "03.07.2017 12:22" Then
        Sheets("MAYIS2017").Range("u1") = Sheets("MAYIS2017").Range("u1") + 1
        StopTimer
        Exit Sub
     End If
    StartTimer
End Sub

Sub StopTimer()
    On Error Resume Next
    Application.OnTime earliesttime:=bekleme, procedure:=cagrilanmakro, schedule:=False
End Sub

Hesap tuttuğum bir dosyam var. Her ay yeni bir sayfa açmam gerekiyor.
Günlerdir 12 sayfa açıp kopyalamaya üşeniyorum. Hem bazı formüller sayfalar arası işlem yaptığı için kopyalama da yetmiyor. Tarih ve sayfa sayısına (u1 hücresindeki değere göre) bağlı bir koşul ile uyarı çıkıyor. Uyarıdan sonra yeni sayfa açtığımda v1 hücresine "x" yazdırıyor, u1 hücresini de bir artırıyor ve böylece uyarının çıkma koşulu ortadan kalkıyor.

3 ay için geçerli bir çözüm bu. Sonsuz döngüyü ödev olarak not ettim. :)

İlginiz için çok teşekkür ederim.
 
Hesap tuttuğum bir dosyam var. Her ay yeni bir sayfa açmam gerekiyor.
Günlerdir 12 sayfa açıp kopyalamaya üşeniyorum. Hem bazı formüller sayfalar arası işlem yaptığı için kopyalama da yetmiyor. Tarih ve sayfa sayısına (u1 hücresindeki değere göre) bağlı bir koşul ile uyarı çıkıyor. Uyarıdan sonra yeni sayfa açtığımda v1 hücresine "x" yazdırıyor, u1 hücresini de bir artırıyor ve böylece uyarının çıkma koşulu ortadan kalkıyor.
3 ay için geçerli bir çözüm bu. Sonsuz döngüyü ödev olarak not ettim. :)
İlginiz için çok teşekkür ederim.

Önemli olan çözüm tabiki. Ancak yeni bir konu ile yeni dönem hazırlama makrosu diye konu açarsanız her yeni ayda formülleri bağlantıları ve sayfa adını değiştirecek bir makro yazılabilir. Daha kullanışlı olur.
 
Önemli olan çözüm tabiki. Ancak yeni bir konu ile yeni dönem hazırlama makrosu diye konu açarsanız her yeni ayda formülleri bağlantıları ve sayfa adını değiştirecek bir makro yazılabilir. Daha kullanışlı olur.

İşte bu dediğiniz ödev hocam. :)

Teşekkür ederim.
 
Geri
Üst