繁体   English   中英

损坏的Excel VBA宏运行时错误'1004':对象'_Global'的方法'Range'失败

[英]Broken Excel VBA Macro Run-time error '1004': Method 'Range' of object '_Global' failed

我有一个宏,称为“隐藏完成”,自4月以来一直有效。 该宏应该按完成日期将项目排序,然后在“完成日期”字段中隐藏包含数据的行。 由于某种原因,它上周失败了,我无法确定出了什么问题。 一个相同的宏正在另一个选项卡上运行(表和字段名称的名称不同),并且工作正常。 我在Stack Overflow(或其他站点)上没有找到足够接近我的问题的线程来提供帮助。 这是宏:

    Sub hideCompleted()
'

' showCompleted Macro
'
    Application.ScreenUpdating = False
'
    Range("A1").Select
    ActiveSheet.ListObjects("Table2").Range.AutoFilter Field:=1

' sortDataByDate Macro
'
    ActiveWorkbook.Worksheets("Project List").ListObjects("Table2").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Project List").ListObjects("Table2").Sort.SortFields.Add _
        Key:=Range("Table2[[#All],[Complete" & Chr(10) & "Date]]"), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("Project List").ListObjects("Table1").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
'

' hideCompleted Macro
'

'
    Range("A2").Select
    ActiveSheet.ListObjects("Table2").Range.AutoFilter Field:=1, Criteria1:="="

    Application.ScreenUpdating = True

End Sub

Excel引起注意:运行时错误'1004':对象'_Global'的方法'Range'失败。

但是调试器中突出显示的代码是: 调试器中突出显示的代码

我检查了单个单元格中的字符数,以查看我是否超过了911个字符的限制(尤其是注释列中的单元格-F列)。 事实并非如此。 我还要附加一张excel工作表的图像,以了解如何使用它。 任何帮助表示赞赏。 在此处输入图片说明

如果您的问题是我的想法,那么许多其他答案都可以解决。

您为Key参数提供的参数不是完全限定的,因此它暗中在做:

ActiveWorkbook.Worksheets("Project List").ListObjects("Table2").Sort.SortFields.Add _
    Key:=ActiveSheet.Range("Table2[[#All],[Complete" & Chr(10) & "Date]]"), SortOn:=xlSortOnValues, _
    Order:=xlAscending, DataOption:=xlSortTextAsNumbers

当然,如果ActiveSheet在运行时不是"Project List"之外的任何工作表,则可能会失败。

通过将Range对象限定为适当的工作表来解决此问题:

Dim wsProjectList as Worksheet
Set wsProjectList = ActiveWorkbook.Worksheets("Project List")

wsProjectList.ListObjects("Table2").Sort.SortFields.Add _
    Key:=wsProjectList.Range("Table2[[#All],[Complete" & Chr(10) & "Date]]"), _
    SortOn:=xlSortOnValues, _
    Order:=xlAscending, DataOption:=xlSortTextAsNumbers

答案是出现错误的行上的引用字段已更改。 如果将此公式中的字段名称更新为正确的名称,则代码将正确执行。

但是,除非您百分百地确定它不会更改,否则将来通过表索引的索引号而不是字段名来引用表列可能更安全。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM