-
- Destek
-
-
Özel Arama
![]() |
End Sub
eklemeyi unutmayın.
Change
olayında, kodların yazılı olduğu sayfanın herhangi bir hücresi değiştiğinde tetiklenme gerçekleşir.Calculate
olayı tetiklenir, Change
olayı tetiklenmez.Calculate
olayı gerçekleşmesi lazım. Makro ile değişse Change
olayı, fonksiyon olsa Calculate
tetiklenir. ademkavak yazdı:merhaba
A1 hücresinde dinamik saat var oradan ((SAAT(A1))*60)+DAKİKA(A1) ile hücreye dakikayı yazdırıyorum. her bir dakikada hücredeki sayı değişmiş oluyor.
Sub SaatDakika()
olduğunu varsayıyorum;Sub SaatDakika()
[A1] = Now
'Falanlar...
'Filanlar...
'Falancalar...
'Hatta filancalar...
OtomatikMakrolar TimeValue([A1])
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A1]) Is Nothing Then OtomatikMakrolar TimeValue([A1])
End Sub
Sub OtomatikMakrolar(CurrTime#)
If CurrTime < 10 / 24 Or CurrTime > 18 / 24 Then Exit Sub
Select Case Minute(CurrTime)
Case 0
MakroKopyala '10:00-18:00 arası tam saatler
If Hour(CurrTime) = 18 Then MakroYedek '18:00 yedek al
Case 15
MakroKopyala '10:15-17:15 arası ilk çeyrekler
Case 30
MakroKopyala '10:30-17:30 arası yarım saatler
Case 45
MakroKopyala '10:45-17:45 arası son çeyrekler
End Select
End Sub
Sub MakroKopyala()
'Kopyalama işlemleri
'...
End Sub
Sub MakroYedek()
'yedekleme işlemleri
'...
End Sub
ademkavak yazdı:merhaba
her iki şekilde de yaptım ancak benim sistemde mi bir sorun var anlamadım bir türlü çalışmıyor
dosyanın sadeleştirilmiş halini ekledim bakarsanız sevinirim.
iyi çalışmalar
Şimdi()/Now()
gibi formüller ile anlık zamanı yazdırıyorsanız A1 hücresi değişikliği Change
olayını tetiklemez Calculate
olayı tetiklenir. Daha önce bahsetmiştim.G1:G117
aralığı güncellenmekte.G1:G117
aralığı Change
olayını tetikliyor, buna dayalı yapılabilir.Calculate
olayına dayalı da olabilir.Change
olayına dayalı olduğu için çalışmamış, mantık yine aynı olacak.
A1
=Şimdi()
formülünüz silinmiş.A1
saat güncellemesini zaten G1:G117
aralığı değiştiği için gerçekleşiyor, aksi takdirde sayfa yeniden hesaplanmadığı sürece saat güncel kalmaz.Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G1:G117]) Is Nothing Then OtomatikMakrolar TimeValue([A1])
End Sub
Change
olayını tetiklemez, Fomüllü hücrenin yeniden hesaplanabilmesi için ise Claculate
olayının tetiklenmesi gerekir. Bu da Change
olayından sonra oluşur. Bu sebepten, eğer ki A1 ve/veya B1 formüllü hücre değerleri değişiyor ise muhakkak bir Change
olayı gerçekleşiyordur. Aksi halde o formüller yeniden hesaplanmaz.Change
olayına sadece OtomatikMakrolar TimeValue([A1])
yazarsanız bile çalışır. Ama dediğim gibi, kısıtlı bilgiden dolayı başka ne gibi şeylere etki eder bunu bilemem.Change
olayında daha doğru ve kolay yapılabilecek bu işlemi biraz dolambaçlı olarak Open
ve Calculate
olayları ile de yapılabilir.Change
olayı ya da bu kurguyu kullanın, Change
kodları pasif yaptım, ekteki örnekten incelersiniz,
Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 0 misafir