2016-06-13 133 views
0

我從一個工作簿將大量過濾的數據(僅可見數據和值)複製到另一個工作簿,但過程非常緩慢。我想嘗試繞過剪貼板,看看是否提高了速度,但我不斷收到錯誤「對象不支持此屬性或方法」。這裏是代碼是失敗的:VBA - 將過濾的數據值從一個工作簿複製到另一個工作簿

ActiveSheet.SpecialCells(xlCellTypeVisible).Copy _ 
    Destination:=Windows("Some Report").Worksheets(_ 
           "Some Sheet").Range("A1").Values 

我試過不同的變化,但收到相同的錯誤。預先感謝您的幫助。

+0

我無法按照自己的意願讓它工作。我所做的工作就是設定一個範圍相等。工作表(「一些報表」)工作表(「某些表」)範圍(「A1:ZZ100」)。值=工作簿(「某個報表2」)。工作表(「某些表2」)。範圍(「A1: ZZ100" )。這些值。這工作得很好,但我還沒有能夠使它與過濾的範圍一起工作。任何人都可以做到這一點,而不必循環通過每個可見的行? – Peter

回答

0

我沒有使用SpecialCells(xlCellTypeVisible)方法來完成此操作,它完全複製和粘貼。 (「A1:」&最後一列&最後一行)。複製目的地:=工作表(「Sheet2」)。範圍(「E5 「)方法,它在Office 2010上工作得很好。我確實查看了SpecialCells(xlCellTypeVisible)方法,但它從來沒有必要。

也許如果你把UsedRange.SpecialCells(xlCellTypeVisible).Copy它會工作嗎?

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 

不幸的是,沒有看到很多其他代碼的我不能證明太多別的,但這是複製和粘貼唯一的選擇,我知道的。

相關問題