• DİKKAT

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

Makronun ilk satırları en son çalışıyor

  • Konbuyu başlatan Konbuyu başlatan sonkurt
  • Başlangıç tarihi Başlangıç tarihi
Katılım
5 Aralık 2005
Mesajlar
34
Excel Vers. ve Dili
2010 Türkçe
Sub verileriguncelle()
ActiveWorkbook.RefreshAll
With Worksheets("TUPRS")
If .Range("d3").Value > 0 Then
Call İKİNCİSEANSYAZ
Else
Call BİRİNCİSEANSYAZ
End If
End With
End Sub

Şeklinde bir makrom var. Bu makroyu(makro bilgim yok; ancak kopyala yapıştır.) deneme yanılmalarla yaptım. Bu makro Dış veri aldığı sayfayı güncelleyip, şarta göre altta çağırılan makroları çalıştırıyor olması gerekiyor. Ancak bu makro önce alttaki makroları çalıştırıp daha sonra dış veri aldığı sayfayı güncelliyor. Hata nerede bulamadım. Yardımlarınızı rica ediyorum.
 
Son düzenleme:
With Worksheets("TUPRS")
Bu satır da mı problem var acaba?
 
Selamlar,

Dosyanızı ekleme imkanınız varmı?
 
Selamlar Korhan Bey

Dosyamı ekledim. Biraz büyük olduğu için 8 hisse senedi sayfasını çıkarıp "SEANSYAZ" kodlarını ona göre güncelledim. Dosyayı istemeniz isabet oldu. "Zamanlama" makromda da hata olduğunu gördüm. "Zamanlama" makrosunu İMKB'nin açık olduğu saatlerde veri yazılması için oluşturmuştum. Ancak ilk seans(09:35' te başlayıp ,12:15' te işlemi durduruyor.) düzgün çalışmasına rağmen ikinci seans 14:05' te devreye girmiyor. Sanırım o makroda da problem var. İlginiz için teşekkür ederim.
 

Ekli dosyalar

Selamlar Korhan Bey

Dosyamı ekledim. Biraz büyük olduğu için 8 hisse senedi sayfasını çıkarıp "SEANSYAZ" kodlarını ona göre güncelledim. Dosyayı istemeniz isabet oldu. "Zamanlama" makromda da hata olduğunu gördüm. "Zamanlama" makrosunu İMKB'nin açık olduğu saatlerde veri yazılması için oluşturmuştum. Ancak ilk seans(09:35' te başlayıp ,12:15' te işlemi durduruyor.) düzgün çalışmasına rağmen ikinci seans 14:05' te devreye girmiyor. Sanırım o makroda da problem var. İlginiz için teşekkür ederim.

.

Dosyanız ekte.

Olmuş mu?


.
 

Ekli dosyalar

Merhaba
Yurttas Bey sanırım birinci problemim çözülmeden, ikinciyi sorduğum için kafa karıştırdım.
Sizin yazdığınız makrodan gidersek;

Sub verileriguncelle()
ActiveWorkbook.RefreshAll
Sheets("TUPRS").Select
If Range("d3").Value > 0 Then
Call İKİNCİSEANSYAZ
Else
Call BİRİNCİSEANSYAZ
End If
End Sub


"ActiveWorkbook.RefreshAll" Kodu ile önce, dışveri al ile veri aldığım sayfayı güncelleyip daha sonra alt satırdaki kodları devreye sokması gerekiyor.
Ancak uygulamada;

"If Range("d3").Value > 0 Then
Call İKİNCİSEANSYAZ
Else
Call BİRİNCİSEANSYAZ"

kodlarını önce çalıştırıp daha sonra "ActiveWorkbook.RefreshAll" kodunu çalıştırıyor.
Dolayısıyla veriler güncellenmeden kayıt yapılıyor.


Selamlar.
 
Son düzenleme:
Merhaba
Korhan Bey sanırım birinci problemim çözülmeden, ikinciyi sorduğum için kafa karıştırdım.
Sizin yazdığınız makrodan gidersek;

Sub verileriguncelle()
ActiveWorkbook.RefreshAll
Sheets("TUPRS").Select
If Range("d3").Value > 0 Then
Call İKİNCİSEANSYAZ
Else
Call BİRİNCİSEANSYAZ
End If
End Sub


"ActiveWorkbook.RefreshAll" Kodu ile önce, dışveri al ile veri aldığım sayfayı güncelleyip daha sonra alt satırdaki kodları devreye sokması gerekiyor.
Ancak uygulamada;

"If Range("d3").Value > 0 Then
Call İKİNCİSEANSYAZ
Else
Call BİRİNCİSEANSYAZ"

kodlarını önce çalıştırıp daha sonra "ActiveWorkbook.RefreshAll" kodunu çalıştırıyor.
Dolayısıyla veriler güncellenmeden kayıt yapılıyor.


Selamlar.

Ben Korhan bey değilim. Onu hatırlatayım.

Kodu aşağıdaki şekilde deneyin.

Kod:
Sub verileriguncelle()
Sheets("sorgu").Select
    Range("B5").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
Sheets("TUPRS").Select
If Range("d3").Value > 0 Then
Call İKİNCİSEANSYAZ
Else
Call BİRİNCİSEANSYAZ
End If

End Sub

.
 
sayın sonkurt.

sorgu sayfasındaki verilerin çekilişine ilişkin kodları aktarırsanız biz de yararlanabilirz dosyadan.

teşekkürler.
 
sayın sonkurt.

sorgu sayfasındaki verilerin çekilişine ilişkin kodları aktarırsanız biz de yararlanabilirz dosyadan.

teşekkürler.

Ona ait kod yok. Dış veri al yöntemi orada uygulanmış. Sadece bunun güncellenmesi için;

Kod:
Sheets("sorgu").Select
    Range("B5").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False

Kodları yeterli.

.
 
Ben Korhan bey değilim. Onu hatırlatayım..


Çok mahcubum ; sizden çok özür dilerim.

"Selection.QueryTable.Refresh" kodunu nasıl "Selection.QueryTable.Refreshall" olarak yazabiliriz. Çünkü bu şekilde sadece seçilen alandaki dış veriyi güncelliyor. Oysa sorgu sayfasında 12 dış veri al var.

Dikkatsizliğim için tekrar özür dilerim.
 
Çok mahcubum ; sizden çok özür dilerim.

"Selection.QueryTable.Refresh" kodunu nasıl "Selection.QueryTable.Refreshall" olarak yazabiliriz. Çünkü bu şekilde sadece seçilen alandaki dış veriyi güncelliyor. Oysa sorgu sayfasında 12 dış veri al var.

Dikkatsizliğim için tekrar özür dilerim.

Kitaptaki bütün sayfalarda yer alan "QueryTable"lerin güncellenmesi için aşağıdaki kodu kullanabilirsiniz.

.

Kod:
Sub Güncelle()
    Dim WS As Worksheet
    Dim QT As QueryTable
    
    For Each WS In ActiveWorkbook.Worksheets
        For Each QT In WS.QueryTables
            QT.Refresh
        Next QT
    Next WS
End Sub


.
 
Merhaba
Yurttas Bey
Maalesef son kodlarda da önce veriyi kayıt edip sonra güncelleme yaptı. Bende bir önceki kodlarınızdan yola çıkarak şöyle yaptım.
Kod:
Sub verileriguncelle()
Sheets("sorgu").Select
    Range("A1").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("G1").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("m1").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("s1").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("A13").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("G13").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("m13").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("s13").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("A25").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("G25").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("m25").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("s25").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    
    Sheets("TUPRS").Select
If Range("d3").Value > 0 Then
Call İKİNCİSEANSYAZ
Else
Call BİRİNCİSEANSYAZ
End If
              
    End Sub


Biraz uzun oldu ama, sonunda oldu; çok teşekkür ederim.
 
Son düzenleme:
Selamlar Korhan Bey

Dosyamı ekledim. Biraz büyük olduğu için 8 hisse senedi sayfasını çıkarıp "SEANSYAZ" kodlarını ona göre güncelledim. Dosyayı istemeniz isabet oldu. "Zamanlama" makromda da hata olduğunu gördüm. "Zamanlama" makrosunu İMKB'nin açık olduğu saatlerde veri yazılması için oluşturmuştum. Ancak ilk seans(09:35' te başlayıp ,12:15' te işlemi durduruyor.) düzgün çalışmasına rağmen ikinci seans 14:05' te devreye girmiyor. Sanırım o makroda da problem var. İlginiz için teşekkür ederim.

Mesajda zamanlama makrosunun devreye girmemesi ile ilgili bir sorundan bahsetmiştim.
Sonunda onuda aştım. Aslında çok basitmiş. Sadece auto open makrosu yazdım. Kodlar şöyle

Kod:
Sub auto_open()
Application.OnTime TimeValue("09:40:00"), "zamanla"
Application.OnTime TimeValue("14:05:00"), "zamanla"
End Sub

Sub zamanla()
If ((Time > TimeValue("09:35:00")) And (Time < TimeValue("12:10:00"))) Or ((Time > TimeValue("14:00:00")) And (Time < TimeValue("17:45:00"))) Then
Application.OnTime Now + TimeValue("00:10:00"), "verileriguncelle"
End If
End Sub

Bu kodların amacı saat 09:40 ile 12:10 arası ve saat 14.00 ile 17:45 arası ; 10 dakikada bir veri güncelleme makrosunu çalıştırır.
 
Geri
Üst