对象'_Global'的'范围'失败了VBA

时间:2017-01-24 02:58:35

标签: excel 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

1 个答案:

答案 0 :(得分:1)

问题是numRows变量记录的是0或负值,这意味着当我尝试设置以下范围时:

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

由于数字为负数,范围总是会失败。我通过确保numRows始终保持+ ve来解决这个问题,因此范围可能下降到的最小数字是1.

目前这似乎解决了这个问题。