首页 > 解决方案 > VBA:获取运行时 1004:对象“_Worksheet”的方法“范围”失败。它没有复制到范围

问题描述

这是代码:

Sub RunFilter()
Dim LastRow As Long, LastCritRow As Long, LastResultRow As Long
Sheet1.Range("C31:AH365").ClearContents 'Clear Existing Results
With Sheet2
    If Sheet1.Range("L27").Value = "Enter name." Then LastCritRow = 2 'Determine Last Criteria Row
    LastRow = .Range("A9999").End(xlUp).Row 'Last Row of Data
    .Range("A2:AF" & LastRow).AdvancedFilter xlFilterCopy, CriteriaRange:=.Range("AI2:BN" & LastCritRow), CopyToRange:=.Range("BQ2:CV2"), Unique:=False
    LastResultRow = .Range("BQ999").End(xlUp).Row 'Last Results Row
    If LastResultRow < 2 Then GoTo NoResults
    Sheet1.Range("C31:AH" & LastResultRow + 29).Value = .Range("BQ2:CV" & LastResultRow).Value 'Copy Over Results
NoResults:
End With
End Sub

我在这一行收到一个错误:

.Range("A1:AF" & LastRow).AdvancedFilter xlFilterCopy, CriteriaRange:=.Range("AI1:BN" & LastCritRow), CopyToRange:=.Range("BQ1:CV1"), Unique:=False

我搜索了可能的问题,例如名称已关闭或未正确指定范围。因此,我检查了高级选项卡中的范围与我放置在代码中的范围,它们偏离了 1,因此我更新了它们。我仍然收到错误消息。

编辑评论:当我没有输入过滤规范时,这是单元格 L27 中的内容。这被分配给一个按钮:

Sub ClearFilter()
Dim LastRow As Long
LastRow = Sheet2.Range("A9999").End(xlUp).Row 'Last Row of Data
Sheet1.Range("C31:AH" & LastRow + 29).Value = Sheet2.Range("A2:AF" & LastRow).Value 'Bring Data Over
Sheet1.Range("L27").Value = Sheet1.Range("AN31").Value 'Copy Over Default Text
Sheet2.Range("AI2:BN2").ClearContents
End Sub 

标签: excelvba

解决方案


推荐阅读