Я использую этот код для фильтрации данных, которые мне нужны, чтобы я мог скопировать и вставить в другую книгу.
С фильтром проблем нет, но Count возвращает неверное количество видимых строк.
Count1 = .SpecialCells(xlCellTypeVisible).Rows.Count
Я также пытался Count1 = Rows.SpecialCells(xlCellTypeVisible).Count
, но это дает мне ошибку.
Sub ListForeignTrans()
Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopyLastRow As Long
Dim lDestLastRow As Long
Dim Rng As Range
Dim CoName As Range
Dim Count1 As Long
Set wsDest = ThisWorkbook.Worksheets("List Foreign Trans")
Set Rng = wsDest.Range("E2") 'To be use in the directory
Set CoName = wsDest.Range("E1") 'To be use in the directory
'Open workbook
Workbooks.Open Filename:= _
"\\172.17.10.134\Finance Tower\0042_Witholding Tax\" & CoName & "\" & Rng & "\" & CoName & " Exp GL " & Rng & ".XLSX"
'Filter
With Workbooks(CoName & " Exp GL " & Rng & ".XLSX").Worksheets("Sheet1").Range("A1")
.AutoFilter Field:=19, Criteria1:="<>MYR" _
, Criteria2:="<>", Operator:=xlAnd
.AutoFilter Field:=20, Criteria1:="<>0.00"
.AutoFilter Field:=2, Criteria1:="<> "
Count1 = .SpecialCells(xlCellTypeVisible).Rows.Count 'Count Row
'If only 1 row close workbook, else proceed to copy from the workbook open by previous step to current workbook.
If Count1 = 1 Then GoTo Line1 Else
Set wsCopy = Workbooks(CoName & " Exp GL " & Rng & ".XLSX").Worksheets("Sheet1")
lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "Q").End(xlUp).Offset(1).Row
wsCopy.Range("B2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy _
wsDest.Range("Q" & lDestLastRow)
End With
Line1:
'Close Workbook
Workbooks(CoName & " Exp GL " & Rng & ".XLSX").Close SaveChanges:=False
End Sub
Должно быть 3 ряда.Но результат продолжает давать мне 1 ряд.