簡體   English   中英

對象'_Global'的'Range'失敗VBA

[英]'Range' of object'_Global' failed VBA

設置了兩個日期范圍。 設置此范圍后,我單擊刷新數據宏,然后從這兩個日期范圍內提取數據。 (即日期 1 - 1/1/2017。日期 2 - 31/1/2017)但是我注意到,一旦我超出日期范圍 19/1/2017,它就會拋出一個錯誤,指示對象的范圍有失敗的。 我似乎無法理解這個日期的意義。

我已檢查我的范圍是否不合格,因為我已將工作表設置為“停機時間表 ->”並且我沒有更改工作表名稱。

有誰知道為什么會這樣?

Sub SortFinalTable(numRows As Long)

    Dim sht As Worksheet
    Dim rng As Range

    Set sht = Worksheets("Outage Schedule ->")
    Set rng = sht.Range("A5").Resize(numRows + 1, 52)

    sht.AutoFilterMode = False
    rng.AutoFilter
    On Error Resume Next
    sht.AutoFilter.Sort.SortFields.Clear
    On Error GoTo 0
    sht.AutoFilter.Sort.SortFields.Add Key:=Range("A5:A" & numRows - 4), SortOn:=xlSortOnValues, Order:=xlDescending, _
        DataOption:=xlSortNormal
    sht.AutoFilter.Sort.SortFields.Add _
        Key:=Range("B5:B" & numRows - 4), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With sht.AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With      

End Sub

問題是 numRows 變量記錄的是 0 或負值,這意味着當我嘗試設置以下范圍時:

sht.range("A5")>Resize(numRows +1, 52)
....
....
....
sht.AutoFilter.Sort.SortFields.Add Key=Sht.Range("A5:A" & numRows - 4),...

由於數字為負數,范圍將始終失敗。 我通過確保 numRows 始終保持 +ve 來解決這個問題,因此范圍可能下降到的最低數字是 1。

這似乎暫時解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM