2017-07-25 62 views
0

我正在编写代码来过滤某些数据并将其复制。之后,我想将其滤除到原来的状态。我正在使用ActiveSheet.ShowAllData语句,但它也取消隐藏所有隐藏的行。是否有一组代码可以让我过滤未过滤的数据,但不隐藏以前隐藏的任何行?VBA Excel未过滤但未取消隐藏行

感谢您的回答

编辑:这是代码,如果它有帮助。

子CopyToAmortizing()

Dim tbl As Range 
Dim VisibleCells As Integer 
Dim lr As Long 

Sheets("Template").Select 
Columns("A:AZ").EntireColumn.Hidden = False 
If Not ActiveSheet.AutoFilter Is Nothing Then Cells.AutoFilter 
Range("A5:AB5").Select 
Range(Selection, Selection.End(xlDown)).Select 
Set tbl = Selection 

ActiveSheet.Range("$A$3:$N$9999").AutoFilter Field:=1, Criteria1:= _ 
    "Amortizing Item" 

对错误转到POINT2

VisibleCells = tbl.SpecialCells(xlCellTypeVisible).Rows.Count 
If VisibleCells >= 1 Then 

Range("A3").Select 
Selection.End(xlDown).Activate 
lr = ActiveCell.Row 

Range("B3", Cells(lr, 12)).Select 
Selection.Copy 
Sheets("AmortizingItems").Select 
Range("A2").Select 
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 
Application.CutCopyMode = False 
Rows(2).EntireRow.Delete 
Range("A2").Select 
Sheets("Template").Select 
End If 

POINT2:

ActiveSheet.ShowAllData 
Columns("A:AZ").EntireColumn.Hidden = False 
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1 
Range("A5").Select 

结束子

我使用过滤器: ActiveSheet.Range( “$ A $ 3:$ N $ 9999”)。自动筛选字段:= 1,标准1:= _ “摊销物品” 然后:ActiveSheet.ShowAllData

+0

你能后你当前的代码? – MLavrentyev

回答

1

最简单的答案是关闭自动筛选通过使用

Sheets("YourSheetName").AutoFilterMode = False 

这里就是我隐藏的行添加到阵列的样品,然后再躲,我跟他们做了之后......

Sub SampleHiddenRows() 

Set hidrows = New Collection 

Set Rng = Range(Cells(5, 4), Cells(13, 5)) 

For Each cll In Rng 
    If cll.EntireRow.Hidden = True Then 
     hidrows.Add cll.Row 
    End If 
Next cll 

Rng.AutoFilter field:=1, Criteria1:="one" 
Rng.SpecialCells(xlCellTypeVisible).Copy 


ActiveSheet.AutoFilterMode = False 

For t = 1 To hidrows.Count 
    Rows(hidrows(t)).Hidden = True 
Next t 

End Sub 
+0

我试过这一组过滤的数据,包括一个隐藏的行,并且上面的行在过滤器被删除时取消隐藏该行。 – davidmneedham

+0

@davidmneedham我编辑了答案 –

+0

@davidmneedham谢谢!我通过设置一个新的集合并添加隐藏行到集合中,然后在最后重新隐藏它们来做为答案。效果很好! –

相关问题