使用 VBA 从表中仅复制过滤后的数据

问题描述 投票:0回答:1

我有一堆数据,标题上带有过滤器。使用此代码,它已经能够根据我的需要复制数据。但是,我希望此代码仅应用于可见单元格(在我选择标题上的特定过滤器列表后,Excel 上显示的数据)。

Private Sub CommandButton1_Click()
    Dim i As Long, j As Long
    Dim arrData, rngData As Range
    Dim arrRes, iR As Long
    Dim oSht1 As Worksheet, oSht2 As Worksheet
    Set oSht1 = Sheets("COBA")
    Set oSht2 = Sheets("AMBIL")
    Set rngData = oSht1.Range("A1").CurrentRegion
    arrData = rngData.Value
    ReDim arrRes(1 To UBound(arrData), 10)
    For i = LBound(arrData) To UBound(arrData)
        If Len(arrData(i, 12)) * Len(arrData(i, 13)) > 0 Then
            iR = iR + 1
            arrRes(iR, 4) = arrData(i, 1)
            arrRes(iR, 5) = arrData(i, 2)
            arrRes(iR, 6) = arrData(i, 6)
            arrRes(iR, 7) = arrData(i, 14)
            arrRes(iR, 8) = arrData(i, 16)
            arrRes(iR, 9) = arrData(i, 17)
            arrRes(iR, 10) = arrData(i, 15)
        End If
    Next i
    If iR > 0 Then
        oSht2.Cells.Clear
        oSht2.Range("A1").Resize(iR, 11).Value = arrRes
    End If
End Sub
excel vba excel-2013
1个回答
0
投票

您可以修改此行:

If Len(arrData(i, 12)) * Len(arrData(i, 13)) > 0 Then

If Len(arrData(i, 12)) * Len(arrData(i, 13)) > 0 And arrData(i, 12).EntireRow.Hidden = False Then

© www.soinside.com 2019 - 2024. All rights reserved.