19. november 2012 - 08:35Der er
2 kommentarer og 1 løsning
VBA macro: størrelse filtreret range
Hej
Jeg har en simpel macro hvor jeg filtrerer på et worksheet, som nedenfor: compareWS.Activate Cells.Select Selection.AutoFilter ActiveSheet.Range("$A$1:$O$291").AutoFilter Field:=4, Criteria1:=stateQualifier ActiveSheet.Range("$A$1:$O$291").AutoFilter Field:=6, Criteria1:=stateReason ActiveSheet.Range("$A$1:$O$291").AutoFilter Field:=8, Criteria1:=reasonQualifier ActiveSheet.Range("$A$1:$O$291").AutoFilter Field:=10, Criteria1:=reason
Mit problem er hvordan jeg på nemmeste hvis får antallet af rækker, efter at filtret er sat.
Set tmpRange = compareWS.Range(Cells(CompareSheetOffset, 1), Cells(maxRow, maxCol))
tmpRange.AutoFilter Field:=4, Criteria1:=stateQualifier tmpRange.AutoFilter Field:=6, Criteria1:=stateReason tmpRange.AutoFilter Field:=8, Criteria1:=reasonQualifier tmpRange.AutoFilter Field:=10, Criteria1:=reason selectedRows = 0 For iLoop = 1 To tmpRange.Rows.Count If tmpRange(iLoop, 1).Rows.Hidden = False Then selectedRows = selectedRows + 1 End If Next
Nu kan jeg tælle, og problemet er løst - men kan det gøres bedre?
compareWS.Activate Set tmpRange = compareWS.Range(Cells(1, 1), Cells(maxRow, maxCol)) tmpRange.Select
tmpRange.AutoFilter Field:=4, Criteria1:=stateQualifier tmpRange.AutoFilter Field:=6, Criteria1:=stateReason tmpRange.AutoFilter Field:=8, Criteria1:=reasonQualifier tmpRange.AutoFilter Field:=10, Criteria1:=reason selectedRows = 0 For iLoop = CompareSheetOffset To tmpRange.Rows.Count If tmpRange(iLoop, 1).Rows.Hidden = False Then selectedRows = selectedRows + 1 End If Next Call RemoveFiltersAndHiddenRows(compareWS)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.