![](/img/trans.png)
[英]Excel VBA Run-Time Error '1004' Method 'Range' of object'_Global' Failed
[英]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.