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

时间:2015-05-15 03:54:29

标签: excel-vba filter copy paste vba

我正在编写一个复制一组数据的VBA宏,应用一些过滤,然后将过滤后的数据复制到下一个可用行。我的问题是最后一行“copyRange.SpecialCells(xlCellTypeVisible).Copy GAR070 ....”它有时可以工作,有时不会出现错误:运行时错误'1004':对象'_Worksheet'的方法'范围'失败。

如果我然后将对GAR070工作表对象的引用更改为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

1 个答案:

答案 0 :(得分:0)

这有点令人困惑,因为你有

With GAR070

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

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

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))

这有意义吗?