makro şu günde bir defa çalışsın

Katılım
14 Ekim 2006
Mesajlar
267
Excel Vers. ve Dili
excel2003 Tr
sn hocalarım herkese hayırlı günler

şöyle bi sorum olacak,arama yaptım ama pek bi sonuç çıkmadı.
çalışma sayfasını hergün açıyorum.bir gün geldiğinde makro çalışıyor.ancak o gün içinde her defasında sayfa tekrar tekrar açıldığında makro çalışıyor.istediğim ise o gün içinde sadece bir defa makro çalışsın.aşağıdaki gibi;
kod:
tarih = Day(Date) & "/" & Month(Date) & "/" & Year(Date)
If tarih = "10/10/" & Year(Date) Then
For z = 1 To Sheets.Count - 1
Sheets(z).Select
.........
10/10/2007 tarihinde kodlar çalışacak ama gün içinde kaç defa açarsan o kadar defa bu makro devreye girecek.çünkü yapılan iş uzun olduğu için zaman kaybediyorum.yani o gün içinde makronun sadece bir defa çalışması acaba mümkün mü?
yardımcı olacak arkadaşlara çok teşekkür ederim.
saygılarımla:yardim:
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ekteki örnek dosyayı incelermisiniz.

Kodların çalışma mantığı;

Butona tıkladığınızda ilk olarak kod içinde tanımlanan tarih kontrol ediliyor. Eğer tarih sizin kodları çalıştırmak istediğiniz tarih ise bu defa KONTROL isimli sayfanın A1 hücresi kontrol ediliyor. Eğer hücre boş ise makro o gün içinde ilk kez çalıştığından işleme devam ediyor ve KONTROL isimli sayfanın A1 hücresine 1 değerini yazıyor. Butona ikinci kez tıkladığınızda A1 hücresi dolu olduğundan makronuz çalışmayacaktır. İsterseniz KONTROL isimli sayfayı gizleyebilirsiniz.

Umarım faydası olur.
 
Katılım
14 Ekim 2006
Mesajlar
267
Excel Vers. ve Dili
excel2003 Tr
sn cost control
cevabınız için çok teşekkür ederim.
ancak bu yöntem bana pek uygun değil çünkü çalışma sayfalarının sayısı çok önemli benim için hücreye değer vermekten başka bir yolu var mı acaba?
teşekkürler saygılar
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sn.Cost Control'un verdiği kodları aşağıdaki gibi değiştirirseniz, ayrı kayıt sayfalarına ihtiyaç duymazsınız.

NOT: Registry'de, makro çalıştırmayla ilgili kayıt anahtaları ve değerleri oluşturulur.

NOT2: Registry kayıtlarını incelemek için: Başlar->Çalıştır komutunu verin.... Kutucuğa, "Regedit" yazın ve Tamam deyin. Karşınıza "Kayıt Defteri" çıkacaktır.

"HKEY_CURRENT_USER\SOFTWARE\VB and VBA Program Settings\Ornekks.xls" anahtarları inceleyebilirsiniz.

Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Date <> DateSerial(Year(Now), 9, 26) Then
       For i = 1 To Sheets.Count
           SaveSetting ThisWorkbook.Name, "MakroKaydi", Sheets(i).Name, 0
       Next i
    End If
End Sub
Kod:
Sub TEST()
    If Date = DateSerial(Year(Now), 9, 25) Then
       On Error Resume Next
       If GetSetting(ThisWorkbook.Name, "MakroKaydi", ActiveSheet.Name) <> 1 Then
          MsgBox "MAKRONUZ ÇALIŞIYOR...", vbInformation
          SaveSetting ThisWorkbook.Name, "MakroKaydi", ActiveSheet.Name, 1
       Else
          MsgBox "MAKRONUZU AYNI GÜN İÇİNDE BİRDEN FAZLA ÇALIŞMAZ !", vbCritical
       End If
    End If
End Sub
 
Katılım
14 Ekim 2006
Mesajlar
267
Excel Vers. ve Dili
excel2003 Tr
sn fpc &#231;ok te&#351;ekk&#252;r ederim
yeni bir&#351;ey daha &#246;&#287;rendim sayenizde.&#246;rnek &#231;al&#305;&#351;&#305;yor ancak ben daha &#231;&#246;zmeye &#231;al&#305;&#351;&#305;yorum.kodlar&#305;m uzun oldu&#287;u i&#231;in yerle&#351;tirmekte zorlan&#305;yorum.umar&#305;m &#231;al&#305;&#351;&#305;r.
ba&#351;ka bir yolu daha var m&#305;?
te&#351;ekk&#252;rler sayg&#305;lar
 
Katılım
14 Ekim 2006
Mesajlar
267
Excel Vers. ve Dili
excel2003 Tr
şu sorun çıktı karşıma

sn hocalarım hayırlı günler

cevaplarla biyere ulaşmaya çalıştım ama sonuç istediğim gibi olmuyor her iki yöntemde de tarih bir sonraki yıla gelince makro çalışmayacak.oysa bu tarih her geldiğinde makronun bir defa çalışmasını istiyorum.acaba bi yolu varmı?
teşekkürler
saygılar:yardim:
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
If Date = DateSerial(Year(Now), 9, 25) Then


Year (Now) Kullanılmış Now şimdi demektir buna göre yılın 2007, 2008, 2009 olması önemli değil benim anlşadığım kadarı ile
 
Üst