Merhabalar. Dosyamın DÖVİZ sayfasında dış verileri yenileyip verileri güncelliyorum. Veri çektiğim 5 adet tablo var. F4:F14 arası hücreler de bu tablodaki verilerle bağlantılı şekilde çarpım yapıyor. F15 Hücresinde bu hücreleri topluyor. Sonrada veriler güncellenince makro ile kaydediyorum. Yapmak istediğim makro ile tabloları her 30 dakikada bir otomatik yenilemek, yenileme başarısız olup #DEĞER! İşareti çıkarsa tekrar yenilesin, yenilemeden sonrada VERİLER makrosunu çalışsın. Aşağıya eklediğim makroyu çalıştırdım olmadı verileri yenilemiyor. Bende F15 hücresi değişince makro çalışsın istedim o da olmadı. Nerde hata yapıyorum bilemedim. Veri ayarların da mı hata var bilemedim. Yardımlarınız için teşekkür ederim.
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:03:00"), "YenileVeKontrol"
End Sub
Sub YenileVeKontrol()
On Error GoTo YenilemeHatasi
ThisWorkbook.Worksheets("DÖVİZ").Range("F4:F14").Refresh
Application.OnTime Now + TimeValue("00:03:00"), "YenileVeKontrol"
If IsError(ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value) Then
Call YenileVeKontrol
Else
Static oldValue As Variant
Dim newValue As Variant
newValue = ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value
If oldValue <> newValue Then
oldValue = newValue
Call VERİLER
End If
End If
Exit Sub
YenilemeHatasi:
Call YenileVeKontrol
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("I1")) Is Nothing Then
Call DovizVeriKopyalaYapistir
End If
If Not Intersect(Target, Me.Range("F4:F14")) Is Nothing Then
Call YenileVeKontrol
End If
If Not Intersect(Target, Me.Range("F15")) Is Nothing Then
Static oldValue As Variant
Dim newValue As Variant
newValue = Me.Range("F15").Value
If oldValue <> newValue Then
oldValue = newValue
Call VERİLER
End If
End If
End Sub
Otomatik veri yenileme sorunu.
-
- Mesajlar: 45
- Kayıt: Prş Mar 21, 2024 11:31 am
- Lokasyon: istanbul
- Meslek: Oto Yedek Parça Satış Elemanı
- Adınız: Sinan
- Soyadınız: Aykaç
Re: Otomatik veri yenileme sorunu.
Deneyiniz;
Workbook_Open: Dosya açıldığında ilk kez 30 dakika sonra YenileVeKontrol işlemi başlatılır.
YenileVeKontrol:Tüm bağlantıları RefreshAll ile yeniler. Eğer F15 hücresinde hata varsa, yenileme tekrar edilir. Yenileme başarılıysa ve F15 hücresinin değeri değişmişse, VERİLER makrosu çalıştırılır.
Workbook_Open: Dosya açıldığında ilk kez 30 dakika sonra YenileVeKontrol işlemi başlatılır.
YenileVeKontrol:Tüm bağlantıları RefreshAll ile yeniler. Eğer F15 hücresinde hata varsa, yenileme tekrar edilir. Yenileme başarılıysa ve F15 hücresinin değeri değişmişse, VERİLER makrosu çalıştırılır.
Kod: Tümünü seç
Private Sub Workbook_Open()
' Her 30 dakikada bir yenileme işlemi başlat
Application.OnTime Now + TimeValue("00:30:00"), "YenileVeKontrol"
End Sub
Sub YenileVeKontrol()
On Error GoTo YenilemeHatasi
' Tüm bağlantıları yenile
ThisWorkbook.RefreshAll
' 30 dakika sonra tekrar çalışması için zamanlayıcıyı ayarla
Application.OnTime Now + TimeValue("00:30:00"), "YenileVeKontrol"
' F15 hücresinde hata olup olmadığını kontrol et
If IsError(ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value) Then
' Hata varsa yeniden dene
Call YenileVeKontrol
Else
' Değer değişmişse VERİLER makrosunu çalıştır
Static oldValue As Variant
Dim newValue As Variant
newValue = ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value
If oldValue <> newValue Then
oldValue = newValue
Call VERİLER
End If
End If
Exit Sub
YenilemeHatasi:
' Yenileme hatası durumunda tekrar dene
Call YenileVeKontrol
End Sub
-
- Mesajlar: 7
- Kayıt: Prş Eki 03, 2024 1:14 pm
- Lokasyon: İstanbul
- Meslek: Oto Satış Elemanı
- Adınız: Sinan
- Soyadınız: Ceviz
Re: Otomatik veri yenileme sorunu.
SNNAY yazdı: ↑Prş Eki 03, 2024 2:55 pm Deneyiniz;
Workbook_Open: Dosya açıldığında ilk kez 30 dakika sonra YenileVeKontrol işlemi başlatılır.
YenileVeKontrol:Tüm bağlantıları RefreshAll ile yeniler. Eğer F15 hücresinde hata varsa, yenileme tekrar edilir. Yenileme başarılıysa ve F15 hücresinin değeri değişmişse, VERİLER makrosu çalıştırılır.
Kod: Tümünü seç
Private Sub Workbook_Open() ' Her 30 dakikada bir yenileme işlemi başlat Application.OnTime Now + TimeValue("00:30:00"), "YenileVeKontrol" End Sub Sub YenileVeKontrol() On Error GoTo YenilemeHatasi ' Tüm bağlantıları yenile ThisWorkbook.RefreshAll ' 30 dakika sonra tekrar çalışması için zamanlayıcıyı ayarla Application.OnTime Now + TimeValue("00:30:00"), "YenileVeKontrol" ' F15 hücresinde hata olup olmadığını kontrol et If IsError(ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value) Then ' Hata varsa yeniden dene Call YenileVeKontrol Else ' Değer değişmişse VERİLER makrosunu çalıştır Static oldValue As Variant Dim newValue As Variant newValue = ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value If oldValue <> newValue Then oldValue = newValue Call VERİLER End If End If Exit Sub YenilemeHatasi: ' Yenileme hatası durumunda tekrar dene Call YenileVeKontrol End Sub
Hocam çok teşekkürler. Şimdi deneyeceğiö. Buna benzer bazı kodlar buldum bilemiyorum belki hatalıdır sizinkinde aynı sorun olmayabilir ama yenilerken kısır döngüye giriyor. Koflar şöyle;
Sub VeriYenile()
Application.OnTime Now + TimeValue("00:05:00"), "VeriYenile"
YenileVeKontrol
End Sub
Sub YenileVeKontrol()
On Error GoTo YenilemeHatasi
ThisWorkbook.RefreshAll
Application.Wait (Now + TimeValue("00:00:05"))
If IsError(ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value) Then
Call YenileVeKontrol
Else
Static oldValue As Variant
Dim newValue As Variant
newValue = ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value
If oldValue <> newValue Then
oldValue = newValue
Call VERİLER
End If
End If
Call VeriYenile
Exit Sub
YenilemeHatasi:
Call YenileVeKontrol
End Sub
-
- Mesajlar: 45
- Kayıt: Prş Mar 21, 2024 11:31 am
- Lokasyon: istanbul
- Meslek: Oto Yedek Parça Satış Elemanı
- Adınız: Sinan
- Soyadınız: Aykaç
Re: Otomatik veri yenileme sorunu.
Eğer F15 hücresindeki değer sürekli bir hata veriyorsa (örneğin, bir bağlantı hatası veya formül hatası), YenileVeKontrol sürekli olarak tekrar çağrılır. Bu durumda, hata sayacı yoksa sonsuz bir döngü oluşur.
Application.OnTime ifadesi, zamanlayıcının sürekli ayarlanması nedeniyle kodun çalışmasını sürekli devam ettirir. Eğer hata sürekli devam ederse, bu durum başka bir sonsuz döngü oluşturabilir. O yüzden Hata sayacı ve zaman sınırlama ekliyoruz:
Application.OnTime ifadesi, zamanlayıcının sürekli ayarlanması nedeniyle kodun çalışmasını sürekli devam ettirir. Eğer hata sürekli devam ederse, bu durum başka bir sonsuz döngü oluşturabilir. O yüzden Hata sayacı ve zaman sınırlama ekliyoruz:
Kod: Tümünü seç
Dim errorCount As Integer
Private Sub Workbook_Open()
' Her 30 dakikada bir yenileme işlemi başlat
Application.OnTime Now + TimeValue("00:30:00"), "YenileVeKontrol"
End Sub
Sub YenileVeKontrol()
On Error GoTo YenilemeHatasi
' Tüm bağlantıları yenile
ThisWorkbook.RefreshAll
' F15 hücresinde hata olup olmadığını kontrol et
If IsError(ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value) Then
errorCount = errorCount + 1
If errorCount < 5 Then ' Hata sayısını 5 ile sınırlıyoruz
' Hata varsa yeniden dene
Call YenileVeKontrol
Else
MsgBox "Veri yenileme hatası devam ediyor. Lütfen kontrol edin."
errorCount = 0 ' Sayaç sıfırlanır
End If
Else
' Değer değişmişse VERİLER makrosunu çalıştır
Static oldValue As Variant
Dim newValue As Variant
newValue = ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value
If oldValue <> newValue Then
oldValue = newValue
Call VERİLER
End If
errorCount = 0 ' Hata yoksa sayaç sıfırlanır
End If
' 30 dakika sonra tekrar çalışması için zamanlayıcıyı ayarla
Application.OnTime Now + TimeValue("00:30:00"), "YenileVeKontrol"
Exit Sub
YenilemeHatasi:
errorCount = errorCount + 1
If errorCount < 5 Then
' Yenileme hatası durumunda tekrar dene
Call YenileVeKontrol
Else
MsgBox "Yenileme hatası sürekli devam ediyor. Lütfen kontrol edin."
errorCount = 0 ' Sayaç sıfırlanır
End If
End Sub
-
- Mesajlar: 7
- Kayıt: Prş Eki 03, 2024 1:14 pm
- Lokasyon: İstanbul
- Meslek: Oto Satış Elemanı
- Adınız: Sinan
- Soyadınız: Ceviz
Re: Otomatik veri yenileme sorunu.
Hocam teşekkürler ilginize. Bu şekilde herşey yolunda gitsede makro hızlı çalışıp verilerin yenilemesi bitmeden VERİLER makrosuyla kayıt yapıyor eksik sonuç çıkıyor. Bende mantık yürüterek makroya bir kaç tane duraklama ekledim. Şuan istediğimi yapıyor. Sizinkini de yarın denicem. Tekrar teşekkür ederim, eksik olmayın.SNNAY yazdı: ↑Prş Eki 03, 2024 9:36 pm Eğer F15 hücresindeki değer sürekli bir hata veriyorsa (örneğin, bir bağlantı hatası veya formül hatası), YenileVeKontrol sürekli olarak tekrar çağrılır. Bu durumda, hata sayacı yoksa sonsuz bir döngü oluşur.
Application.OnTime ifadesi, zamanlayıcının sürekli ayarlanması nedeniyle kodun çalışmasını sürekli devam ettirir. Eğer hata sürekli devam ederse, bu durum başka bir sonsuz döngü oluşturabilir. O yüzden Hata sayacı ve zaman sınırlama ekliyoruz:Kod: Tümünü seç
Dim errorCount As Integer Private Sub Workbook_Open() ' Her 30 dakikada bir yenileme işlemi başlat Application.OnTime Now + TimeValue("00:30:00"), "YenileVeKontrol" End Sub Sub YenileVeKontrol() On Error GoTo YenilemeHatasi ' Tüm bağlantıları yenile ThisWorkbook.RefreshAll ' F15 hücresinde hata olup olmadığını kontrol et If IsError(ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value) Then errorCount = errorCount + 1 If errorCount < 5 Then ' Hata sayısını 5 ile sınırlıyoruz ' Hata varsa yeniden dene Call YenileVeKontrol Else MsgBox "Veri yenileme hatası devam ediyor. Lütfen kontrol edin." errorCount = 0 ' Sayaç sıfırlanır End If Else ' Değer değişmişse VERİLER makrosunu çalıştır Static oldValue As Variant Dim newValue As Variant newValue = ThisWorkbook.Worksheets("DÖVİZ").Range("F15").Value If oldValue <> newValue Then oldValue = newValue Call VERİLER End If errorCount = 0 ' Hata yoksa sayaç sıfırlanır End If ' 30 dakika sonra tekrar çalışması için zamanlayıcıyı ayarla Application.OnTime Now + TimeValue("00:30:00"), "YenileVeKontrol" Exit Sub YenilemeHatasi: errorCount = errorCount + 1 If errorCount < 5 Then ' Yenileme hatası durumunda tekrar dene Call YenileVeKontrol Else MsgBox "Yenileme hatası sürekli devam ediyor. Lütfen kontrol edin." errorCount = 0 ' Sayaç sıfırlanır End If End Sub
-
- Benzer Konular
- Cevaplar
- Görüntüleme
- Son mesaj
-
- 3 Cevaplar
- 1353 Görüntüleme
-
Son mesaj gönderen sahin
-
- 6 Cevaplar
- 1408 Görüntüleme
-
Son mesaj gönderen sahin
-
- 3 Cevaplar
- 1887 Görüntüleme
-
Son mesaj gönderen erseldemirel
-
- 1 Cevaplar
- 259 Görüntüleme
-
Son mesaj gönderen ToHaNS
-
- 1 Cevaplar
- 1686 Görüntüleme
-
Son mesaj gönderen sahin