仅将可见单元格复制并粘贴到可变行

Copy and paste visible cells only to variable row

我正在编写一个 VBA 宏来复制一组数据,应用一些过滤,然后将过滤后的数据复制到下一个可用行。我的问题是最后一行 "copyRange.SpecialCells(xlCellTypeVisible).Copy GAR070...." 有时有效,有时不显示错误:运行时错误“1004”:对象“_Worksheet”的方法 'Range' 失败。

如果我随后将对 GAR070 sheet 对象的引用更改为 Sheets("GAR070"),我最终会遇到运行时错误“1004”:应用程序定义或对象定义的错误。

因为这有时对我有用,有时我不知道它是否与我打开的其他工作簿有任何关系?或者当我声明对象时发生了什么?

我的代码还有很多,但我没有把它包括在这里,所以你不必通读所有内容,但如果你怀疑那里可能发生了什么,我很乐意评论它英寸

我之前在这个网站和其他网站上查看过执行此操作的方法,这就是我最初使用此方法找到的方法。

如果我遗漏了什么请告诉我,非常感谢:)

Sub Check_for_specials()
Dim GAR070 As Worksheet
Dim LRowred As Long
Dim filterRange As Range
Dim copyRange As Range
Dim newrow As Long
Dim wb as Workbook

Application.ScreenUpdating = False

Set wb = ActiveWorkbook
Set GAR070 = wb.Sheets("GAR070")

'filter for "Y" in last column, copy this data and paste into the next available row

With GAR070

LRowred = .Cells(Rows.Count, "A").End(xlUp).Row

' turn off any autofilters that are already set
.AutoFilterMode = False

' the range that we are auto-filtering (all columns)
Set filterRange = .Range("A1:O" & LRowred)

' the range we want to copy (only columns we want to copy)
Set copyRange = .Range("A2:N" & LRowred)

' filter range based on column O
filterRange.AutoFilter field:=15, Criteria1:="Y"

' copy the visible cells to our target range
newrow = LRowred + 1
copyRange.SpecialCells(xlCellTypeVisible).Copy GAR070.Range(Cells(newrow, 1), Cells(newrow + 1, 14)) ' seems very volatile...

Application.ScreenUpdating = True

End sub

有点混乱,因为你有

With GAR070

但是没有 End With,所以我不知道你的 With 在哪里结束。

这可能不是您遇到的问题的根源,但这一行:

copyRange.SpecialCells(xlCellTypeVisible).Copy GAR070.Range(Cells(newrow, 1), Cells(newrow + 1, 14))

使用不带限定符的单元格。

如果 End With 出现在该行上方且 Cells(newrow,1) 引用 GAR070 工作表上的地址,则它应显示为:

copyRange.SpecialCells(xlCellTypeVisible).Copy GAR070.Range(GAR070.Cells(newrow, 1), GAR070.Cells(newrow + 1, 14))

如果 End With 出现在此行下方,则应显示为

copyRange.SpecialCells(xlCellTypeVisible).Copy .Range(.Cells(newrow, 1), .Cells(newrow + 1, 14))

这有意义吗?