VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#1)  ademkavak » 11 Oca 2021 15:59

Merhaba,

Sayfanın E1 hücresinde bulunan sayı değiştiğinde ( formül ile sayaç gibi artıyor ) bir modülün çalışmasını istiyorum.

Private Sub Worksheet_Change(ByVal Target As Range)
süre = [e1]
If süre > 356 Then MsgBox "adem"

Bu şekilde çalışıp çalışmadığına bakıyorum ancak bir türlü çalıştırmadım. Sayfanın Change olayına yazdım.

Amacım hücredeki sayacın her artışında makroyu devreye almasını istiyorum.

Teşekkürler
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#2)  Miraç CAN » 11 Oca 2021 16:09

Sayfa kod bölümüne yazdığınız takdirde çalışır. Son satıra End Sub eklemeyi unutmayın.
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 918
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya & Adana

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#3)  ademkavak » 11 Oca 2021 16:30

Cevabınız için teşekkür ederim.
Sonunda end sub var ancak çalışmadı.

E1 hücresindeki formul =((SAAT(A1)-10)*60)+DAKİKA(A1)
A1 deki saatten dakikayı alıyor ve her bir dakikada hücredeki sayı değişiyor. sayı değiştikçe makroyu tetiklemek istiyorum.
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#4)  ademkavak » 11 Oca 2021 16:58

Buradaki sorun şu:
Eğer ilgili hücreye veri girersem veya değiştirirsem çalışıyor ama hücredeki veri kendiliğinden formül ile değiştiği için tetikleme yapmıyor.
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#5)  Miraç CAN » 12 Oca 2021 08:31

Change olayında, kodların yazılı olduğu sayfanın herhangi bir hücresi değiştiğinde tetiklenme gerçekleşir.
Hücredeki veri formülle başka bir sayfadan değişiyorsa Calculate olayı tetiklenir, Change olayı tetiklenmez.

Kendiliğinden değişen formülünüzü merak ettim açıkçası, paylaşabilir misiniz? Yerleşik formüllerin kendiliğinden değişebilmesi için Calculate olayı gerçekleşmesi lazım. Makro ile değişse Change olayı, fonksiyon olsa Calculate tetiklenir. [ilginc]
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 918
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya & Adana

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#6)  ademkavak » 12 Oca 2021 15:58

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.
Bu şekilde çözemeyince başka türlü çözüm aramaya başladım.

istediğim belirlenen sürede ( bu saat başı yada 30 dk bir ) ilgili makroyu ( adı aktarım ) çalıştırmak.
koşullar

sabah 10:00 dan sonra aktarım isimli makro belirtilen sürelerde çalışarak veri kopyalama.
saat 18:00 den sonra ve 10:00 dan önce dosya açık olsa da aktarım makrosunu çalıştırmasın.
saat 18:00 olduktan sonra 1 kez veri yedeklediğim 2 tane sayfayı bir dosya yaparak klasör içine gün adı ile kaydetmek.
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#7)  ademkavak » 12 Oca 2021 16:03

farklı bir yol ile aşağıdaki gibi yapmaya çalışıyorum. kodlar biraz uzun oldu ve hatayı çözemedim.
son hali aşağıdaki gibi.
teşekkür ederim.


Dim RunWhen As Double
Const RunWhat = "Info"
----------------------------------------
Sub Auto_Open()

Dim mydate As Date
Set s1 = Sheets("bilgi")

mydate = Now
dada3 = Format(mydate, "hh:nn")

StartTimer

End Sub

--------------------------
Sub StartTimer()

Dim mydate2 As Date
Dim dada2 As Date
Set s1 = Sheets("bilgi")
'
dada2 = Empty
mydate2 = s1.Cells(1, "a")
'mydate2 = Format(mydate, "hh:nn")
dada2 = Format(mydate2, "hh:nn")

If dada2 = "16:00" Or dada2 = "16:30" Or dada2 = "17:00" Or dada2 = "17:30" Then

RunWhen = Now + TimeSerial(0, 0, 30)
Application.OnTime earliesttime:=RunWhen, procedure:=RunWhat, schedule:=True

Else: End If

DoEvents
End Sub
'---------------------------------
Sub Info()

Call aktarım
StartTimer
End Sub
---------------------------------------
Sub StopTimer()

On Error Resume Next
Application.OnTime earliesttime:=RunWhen, procedure:=RunWhat, schedule:=False
End Sub
'-------------------------------------------
Sub Auto_Close()
StopTimer
End Sub
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

Cevap: Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#8)  Miraç CAN » 13 Oca 2021 09:14

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.

Neden dinamik saat yazdıran kodlarınıza entegre etmeyi denemiyorsunuz?
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 918
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya & Adana

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#9)  ademkavak » 13 Oca 2021 11:16

merhaba

uzun zamandır kodlarla uğraşmadığım için kurguyu maalesef doğru yapamadım.

hücrede saat ve dakika bilgisine ayrıca ihtiyacım oluyor formüllerde kullanıyorum.
Makro içinde kullanmak istedim olmayınca yukarıda yazdığım kodlar ile denedim ondan da sonuç alamadım.

saat 10:00 - 18:00 arası her saat yada yarım saatte bir ( bu değişebilir ) bir sayfadaki verileri başka bir sayfaya kopyalamak istiyorum.

18:00 de son haliyle ilgili sayfayı klasöre gün adı ile ( örnek 13 ocak veri ) kaydetmek, dosya sürekli açık olduğundan makrolar çalışırken de diğer sayfalarda çalışabiliyor olmak gibi bir düşüncem var.

yardımınız için teşekkür ederim.
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#10)  Miraç CAN » 13 Oca 2021 14:55

Çalışmanıza uygun kurgulardan birini tercih ederek tetikleyebileceğiniz, yapmak istediğinizin ana hatlarını belirttim. İlgili yerlere işlemlerinizi ekleyerek çalışmanızı tamamlayabilirsiniz.

Kurgu1; Dinamik saat var olan makronuza entegre olarak,
Kurgu2; A1 hücre değeri değişince.
Kurgu1: Dinamik saat prosedürünüzü Sub SaatDakika() olduğunu varsayıyorum;
Kod: Tümünü seç
Sub SaatDakika()
[A1] = Now
'Falanlar...
'Filanlar...
'Falancalar...
'Hatta filancalar...
OtomatikMakrolar TimeValue([A1])
End Sub

Kurgu2: Sadece bunları Dinamik zaman yazdırılan A1 hücresinin olduğu sayfa kod bölümüne eklemeniz gerekiyor;
Kod: Tümünü seç
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A1]) Is Nothing Then OtomatikMakrolar TimeValue([A1])
End Sub

Modül içerisine de bu kodları ekleyin:

Kod: Tümünü seç
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

Kod: Tümünü seç
Sub MakroKopyala()
'Kopyalama işlemleri
'...
End Sub

Kod: Tümünü seç
Sub MakroYedek()
'yedekleme işlemleri
'...
End Sub
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 918
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya & Adana

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#11)  ademkavak » 14 Oca 2021 00:56

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
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

Cevap: Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#12)  Miraç CAN » 14 Oca 2021 07:52

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

Ekleyememişsiniz, ekleyin bi inceleyelim.
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 918
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya & Adana

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#13)  ademkavak » 14 Oca 2021 08:31

evet maalesef olmamış, şimdi ekledim.

iyi çalışmalar
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#14)  Miraç CAN » 14 Oca 2021 10:50

A1'de dinamik saatiniz yok. Kaldırdınız mı, yoksa A1'e dinamik saatte eklenecek mi?
Bu halde değişim olmadığından tetiklenme olmaz ve çalışmaz önceki kurgular.
Eğer A1'de Ş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.

Eklemiş olduğunuz bağlantı ile dakikada bir G1:G117 aralığı güncellenmekte.
G1:G117 aralığı Change olayını tetikliyor, buna dayalı yapılabilir.
Veya A1'in Calculate olayına dayalı da olabilir.
Daha önceki kurgular A1'in Change olayına dayalı olduğu için çalışmamış, mantık yine aynı olacak.
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 918
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya & Adana

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#15)  ademkavak » 14 Oca 2021 11:06

Miraç bey

A1 de =şimdi() şeklinde dinamik saat varken de çalışmadı. başka sayfada denemek için değiştirmiştim.
Eklentilerde eksiklik olabilir mi?
Denemek için kodların altına msgbox koydum o noktaya geliyor mu çalışıyor mu diye ancak olmuyor.
Yapacağımın dosyanın kilit noktası burası olduğu için önemli.

dosyayı tekrar ekliyorum.
dosya açıldıktan 1 dk sonra ilk mesajın gelmesi gerekiyor sizde çalışıyor mu bu şekilde?

teşekkürler
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#16)  Miraç CAN » 14 Oca 2021 11:28

Evet A1 =Şimdi() formülünüz silinmiş.
Söylediğim gibi, 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.
10. mesajda ki kurguyu şe şekilde değiştirerek yapabilirsiniz;
Kod: Tümünü seç
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G1:G117]) Is Nothing Then OtomatikMakrolar TimeValue([A1])
End Sub
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 918
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya & Adana

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#17)  ademkavak » 14 Oca 2021 12:03

Bilgi sayfası A1 de =şimdi() var.

benzer şekilde çalışan bir dosya var mı acaba?
bendeki durum aşağıdaki gibidir ve maalesef hiçbir tetikleme olmuyor.
Sayfanın kod bölümünde;

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G1:G117]) Is Nothing Then OtomatikMakrolar TimeValue([A1])
End Sub

Sub SaatDakika()
[A2] = Now

OtomatikMakrolar TimeValue([A1])
End Sub
--------------------------
modülde
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 1 ' 15 30 46 olacak
MakroKopyala '10:15-17:15 arası ilk çeyrekler
Case 3
MakroKopyala '10:30-17:30 arası yarım saatler
Case 4
MakroKopyala '10:45-17:45 arası son çeyrekler
End Select
End Sub

Sub MakroKopyala()
'Kopyalama işlemleri
'...
Dim WF As WorksheetFunction
Set WF = WorksheetFunction
Set s1 = Sheets("bilgi")
s1.Cells(4, "b") = "adem"
End Sub


Sub MakroYedek()
'yedekleme işlemleri
'...
Dim WF As WorksheetFunction
Set WF = WorksheetFunction
Set s1 = Sheets("bilgi")
s1.Cells(4, "b") = "adem2"
End Sub
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#18)  Miraç CAN » 14 Oca 2021 12:34

Eklediğim örneği inceleyin;
Dinamik saatin altına her dakika da bir örnek metin yazılıyor.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 918
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya & Adana

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#19)  ademkavak » 14 Oca 2021 14:18

Miraç bey

If Not Intersect(Target, [G1:G117]) Is Nothing Then OtomatikMakrolar TimeValue([A1])

buna göre G kolondaki internet bağlantılı alan değiştiğinde işlem yapıyor ben orayı denemek için yapmıştım.
B1 de saatten aldığı dakika bilgisinin değişimine göre aşağıdaki şekilde yapıyorum.

If Not Intersect(Target, [B1]) Is Nothing Then OtomatikMakrolar TimeValue([A1])

G kolondaki gibi burası da formülle A1 den dakika alıyor. Bu şekilde yaptığımda B1 de sayı değişse bile makro çalıştıktan sonra A2 ve sonrasına yazdırdığınız bölüm çalışmıyor.

Sizi de çok uğraştırdım kusura bakmayın lütfen.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
ademkavak
Yeni Başlamış
 
Kayıt: 11 Oca 2021 15:18
Meslek: yönetici
Yaş: 49
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara çankaya

Cevap: VBA HÜCRE DEĞİŞİMİNE GÖRE MAKRO ÇALIŞTIRMA

İleti#20)  Miraç CAN » 14 Oca 2021 16:15

Adem Bey, yazdıklarımı dikkatlice okursanız önce ki cevaplarda da değindiğim gibi, formül hesaplamaları ile hücre değeri değişimi 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.
Asıl çalıştığınız dosyanızda gerçekleşen ama bahsetmediğiniz bir olay var. Paylaşırsanız o olaya bağlı yaparız.
Ya da başka herhangi bir işlem yapılmıyorsa (sınırlı bilgi paylaşımınızdan dolayı kanaat getiremiyorum) 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.

Ya Change olayı ya da bu kurguyu kullanın, Change kodları pasif yaptım, ekteki örnekten incelersiniz,
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 918
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya & Adana

Sonraki

Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: AhrefsBot, alibuyuk66 ve 4 misafir

Bumerang - Yazarkafe