Makro hata

kaos64

Altın Üye
Katılım
27 Ağustos 2009
Mesajlar
30
Excel Vers. ve Dili
Oficce 2016
Altın Üyelik Bitiş Tarihi
20-12-2024
Merhabalar aşağıdaki kodla ilgi yardımcı olabilirmisiniz
pc de başka excel dosyası açık olursa hata alıyorum.
Run-time error'9'
Subscript out of range

Sub AUTO_MAKRO()
DoEvents
Application.OnTime Now + TimeValue("00:00:30"), "MAKRO"
Application.OnTime Now + TimeValue("00:00:30"), "MAKRO1"
Range("A1").Select
End Sub
Sub MAKRO()
DoEvents
Dim wb As Workbook
Dim ws As Worksheet
Dim lo As ListObject

Set wb = ThisWorkbook
Set ws = wb.Worksheets("Dash")
Set lo = ws.ListObjects("Sorgu1")

lo.QueryTable.Refresh BackgroundQuery:=False

lo.Sort.SortFields.Clear
lo.Sort.SortFields.Add Key:=ws.Range("Sorgu1[[#All],[zaman]]"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With lo.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
AUTO_MAKRO
End Sub
Sub MAKRO1()
DoEvents
Dim wb As Workbook
Dim ws As Worksheet
Dim lo As ListObject

Set wb = ThisWorkbook
Set ws = wb.Worksheets("Misafir")
Set lo = ws.ListObjects("Sorgu2")

lo.QueryTable.Refresh BackgroundQuery:=False

lo.Sort.SortFields.Clear
Sheets("Misafir").Select
Range("Sorgu2").Select
Selection.Copy
Sheets("Dash").Select
Range("H2:O2").Select
ActiveSheet.Paste
Range("Sorgu1[[#Headers],[adsoyad]]").Select
Sheets("Dash").Select
Range("Sorgu1").Select
End Sub

Sub MAKROSTOP()
On Error Resume Next
Application.OnTime RunWhen, "MAKRO", False
Application.OnTime RunWhen, "MAKRO1", False
End Sub
 
Katılım
11 Temmuz 2024
Mesajlar
42
Excel Vers. ve Dili
Excel 2021 Türkçe
Sorunu çözmek için kodunuzdaki tüm referansları tam olarak belirtmeniz gerekiyor. Yani, hangi çalışma kitabı ve çalışma sayfası ile çalıştığınızı açıkça belirtmelisiniz.

Kod:
' Modül seviyesinde değişkenler tanımlıyoruz
Public RunWhen1 As Double
Public RunWhen2 As Double

Sub AUTO_MAKRO()
    DoEvents
    RunWhen1 = Now + TimeValue("00:00:30")
    RunWhen2 = Now + TimeValue("00:00:30")
    Application.OnTime RunWhen1, "MAKRO"
    Application.OnTime RunWhen2, "MAKRO1"
End Sub

Sub MAKRO()
    DoEvents
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim lo As ListObject

    Set wb = ThisWorkbook ' Kodun bulunduğu çalışma kitabı
    Set ws = wb.Worksheets("Dash") ' "Dash" sayfası
    Set lo = ws.ListObjects("Sorgu1") ' "Sorgu1" tablosu

    lo.QueryTable.Refresh BackgroundQuery:=False

    lo.Sort.SortFields.Clear
    lo.Sort.SortFields.Add Key:=ws.Range("Sorgu1[[#All],[zaman]]"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With lo.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    AUTO_MAKRO
End Sub

Sub MAKRO1()
    DoEvents
    Dim wb As Workbook
    Dim wsMisafir As Worksheet
    Dim wsDash As Worksheet
    Dim lo As ListObject

    Set wb = ThisWorkbook ' Kodun bulunduğu çalışma kitabı
    Set wsMisafir = wb.Worksheets("Misafir") ' "Misafir" sayfası
    Set wsDash = wb.Worksheets("Dash") ' "Dash" sayfası
    Set lo = wsMisafir.ListObjects("Sorgu2") ' "Sorgu2" tablosu

    lo.QueryTable.Refresh BackgroundQuery:=False

    lo.Sort.SortFields.Clear

    wsMisafir.Range("Sorgu2").Copy Destination:=wsDash.Range("H2:O2")

    ' Eğer belirli hücrelerde işlem yapmanız gerekiyorsa doğrudan referans verin
    ' Örneğin:
    ' wsDash.Range("Sorgu1[[#Headers],[adsoyad]]").Select ' Bu satıra gerek yok
    ' wsDash.Range("Sorgu1").Select ' Bu satıra da gerek yok
End Sub

Sub MAKROSTOP()
    On Error Resume Next
    Application.OnTime EarliestTime:=RunWhen1, Procedure:="MAKRO", Schedule:=False
    Application.OnTime EarliestTime:=RunWhen2, Procedure:="MAKRO1", Schedule:=False
End Sub
 
Üst