我将大量过滤后的数据(仅限可见数据和值)从一个工作簿复制到另一个工作簿,但过程非常缓慢。我想尝试绕过剪贴板,看看是否提高了速度,但我不断收到错误"对象不支持此属性或方法"。这是失败的代码:
ActiveSheet.SpecialCells(xlCellTypeVisible).Copy _
Destination:=Windows("Some Report").Worksheets( _
"Some Sheet").Range("A1").Values
我尝试了不同的变体,但收到了同样的错误。提前感谢您的帮助。
答案 0 :(得分:0)
我在没有实际使用SpecialCells(xlCellTypeVisible)方法的情况下完成了这项工作,并且它完美地复制和粘贴。我首先使用数组过滤数据,然后我只使用工作表(" Sheet1")。范围(" A1:"& last column& last row)。复制目标:=工作表(" Sheet2")。范围(" E5")方法,它在Office 2010上工作得很好。我确实研究了SpecialCells(xlCellTypeVisible)方法,但它从来没有必要。
也许你把UsedRange.SpecialCells(xlCellTypeVisible).Copy它可以工作吗?
答案 1 :(得分:0)
如果将cells.value设置为彼此相等呢?这个小片段假设您要将单元格复制到同一个目标单元格中,因此如果不是您正在进行的操作,则必须对其进行调整。
Private Sub worksheet_selectionchange(ByVal Target As Range)
Dim lastRow As Integer
Dim lastCol As Integer
Dim wb1 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set wb1 = ThisWorkbook
Set ws1 = wb1.Sheets(1)
Set ws2 = wb1.Sheets(2)
lastRow = ws1.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lastCol = ws1.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Column
For i = 1 To lastRow: For j = 1 To lastCol
If ws1.Cells(i, j).Value > 5 And Not ws1.Cells(i, j).Hidden Then
ws2.Cells(i, j).Value = ws1.Cells(i, j).Value
End If
Next: Next
End Sub
不幸的是,如果没有看到你的其他代码,我就无法证明其他的东西,但这是我所知道的复制和粘贴的唯一选择。