簡體   English   中英

VBA - 將過濾后的數據值從一個工作簿復制到另一個工作簿

[英]VBA - Copy filtered data values from one workbook to another

我將大量過濾數據(僅可見數據和值)從一個工作簿復制到另一個工作簿,但該過程非常緩慢。 我想嘗試繞過剪貼板,看看這是否能提高速度,但我不斷收到錯誤Object does not support this property or method 這是失敗的代碼:

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

我嘗試了不同的變體,但收到相同的錯誤。

只是將 cell.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

不幸的是,沒有看到您的其他代碼,我無法證明其他任何內容,但這是我所知道的復制和粘貼的唯一替代方法。

我在沒有實際使用 SpecialCells(xlCellTypeVisible) 方法的情況下完成了此操作,它可以完美地復制和粘貼。 我首先用數組過濾數據,然后我只使用 Worksheets("Sheet1").Range("A1:" & last column & last row).Copy destination:=Worksheets("Sheet2").Range("E5 ") 方法,它在 Office 2010 上工作得很好。我確實研究了 SpecialCells(xlCellTypeVisible) 方法,但從來沒有必要。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM