Excel 使用“自动筛选”将可见单元格复制到变量

Excel 使用“自动筛选”将可见单元格复制到变量,excel,vba,range,autofilter,Excel,Vba,Range,Autofilter,在运行其他宏之前,我正在使用自动筛选删除一些行。我的一个过滤器会显示一些笔记,我需要保存这些笔记以便以后粘贴。我假设将其保存到一个变量将允许我删除这些行,并在以后需要时粘贴它们。以下是我目前掌握的情况: Sub Test() With Sheet1 .AutoFilterMode = False With Range("A10", Range("A" & Rows.Count).End(xlUp)) On Error Res

在运行其他宏之前,我正在使用自动筛选删除一些行。我的一个过滤器会显示一些笔记,我需要保存这些笔记以便以后粘贴。我假设将其保存到一个变量将允许我删除这些行,并在以后需要时粘贴它们。以下是我目前掌握的情况:

Sub Test()
    With Sheet1
        .AutoFilterMode = False
        With Range("A10", Range("A" & Rows.Count).End(xlUp))
            On Error Resume Next
            .AUTOFILTER Field:=1, Criteria1:="=(**", Operator:=xlFilterValues
            'Insert code to copy values to variable here
            .Offset(1, 0).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        End With
        .AutoFilterMode = False
    End With
End Sub

我不知道如何将可见单元格复制到变量。尝试使用xlCellTypeVisible,但无效

所以我想出来了。下面是代码

With Sheet1
.AutoFilterMode = False
With Range("A10", Range("A" & Rows.Count).End(xlUp))
    On Error Resume Next
    .AUTOFILTER Field:=1, Criteria1:="=Device*", Operator:=xlFilterValues
    .Offset(1, 0).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible).EntireRow.delete
    .AUTOFILTER Field:=1, Criteria1:="=Manufacturer", Operator:=xlFilterValues
    .Offset(1, 0).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible).EntireRow.delete
    .AUTOFILTER Field:=1, Criteria1:="=(**", Operator:=xlFilterValues
    Set MyRange = Sheet1.Range("A10: I" & Cells(Rows.Count - 1, 1).End(xlUp).Row).Offset(1, 0).SpecialCells(xlCellTypeVisible)
    CalVal = MyRange
    .Offset(1, 0).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible).EntireRow.delete
End With
.AutoFilterMode = False
End With
这将删除我需要删除的行,同时保存以“(”开头的行

后来,我把它粘贴在第2页上,其他的都复制好了

'Paste Notes
NumRows = UBound(CalVal, 1) - LBound(CalVal, 1) + 1
NumCols = UBound(CalVal, 2) - LBound(CalVal, 2) + 1
Set Destination = ws2.Range("A" & lastRow).Offset(1, 0)
Destination.Value = "Table Notes"
Destination.Font.Bold = True
Set Destination = ws2.Range("A" & lastRow).Resize(NumRows, NumCols).Offset(2, 0)
Destination = CalVal

当然需要调暗MyRange、CalVal、LastRow、NumRows和NumCols,所以我想出来了。要发布解决方案供任何人将来参考。