簡體   English   中英

在VBA中選擇動態的過濾范圍

[英]Selecting dynamic, filtered range in VBA

我正在嘗試選擇一個從col跨越的動態范圍的過濾數據。 答:上校。 J而不選擇標題(在第1行中)。 從那里我需要將其復制並粘貼到新的工作表中,在這里我將對其進行進一步的操作,但是我無法提出一種有效或實用的方法來執行此操作。 根據我在另一個論壇上找到的一些代碼,我能夠在一列中選擇所有“可見單元格”,但是在嘗試選擇整個范圍時遇到了問題。 我對vba還是很陌生,所以請原諒我的語法,但是下面發布的代碼是嘗試通過Rows.Count和i進行編程的操作,該整數是1-10。 如果您對如何更好,更有效地執行此操作有任何建議,我將不勝感激。

Sub SelectVisibleInColD()
    Dim lRow As Long, i As Integer
    Set i = 1
Do While i <= 10

    With ActiveSheet
        lRow = .Cells(.Rows.Count, i).End(xlUp).Row
        If lRow < 3 Then Exit Sub
        .Cells(1, 1).Offset(1, 0).Resize(lRow - 1).SpecialCells(xlCellTypeVisible).Select
    End With

 i = i + 1
 Loop
End Sub

您可以使用ActiveSheet Range屬性來選擇范圍。 您已經有了最后一行,並且知道標題在第一行中,因此您的范圍從位置A2開始,一直到列J的最后一行

ActiveSheet.Range("A2:J"&lRow).SpecialCells(xlCellTypeVisible)

如果要復制此范圍,請使用“ Copy功能

yourRangeAsAbove.Copy

此函數僅將所選內容移至內存,進行粘貼,構建目標范圍並調用PasteSpecial函數。

我遇到了這個問題,搜索了我的問題:在vba中刪除過濾的選擇。 但是,嘗試您的答案&lRow會給我一個運行時錯誤1004,應用程序定義的錯誤或對象定義的錯誤

我通過此ActiveSheet.Range(“ A2:G”& Range(“ A”&Rows.Count).End(xlUp).Row) .SpecialCells(xlCellTypeVisible).Delete來解決它。

對於那些也可能會遇到相同問題的人。

暫無
暫無

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

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