【问题标题】:VBA Excel Unfiltering but not unhiding rowsVBA Excel取消过滤但不取消隐藏行
【发布时间】:2017-12-31 17:44:21
【问题描述】:

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

感谢回复

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

Sub 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"

错误转到点 2

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

点2:

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

结束子

我使用过滤器: ActiveSheet.Range("$A$3:$N$9999").AutoFilter Field:=1, Criteria1:= _ “摊销项目” 然后:ActiveSheet.ShowAllData

【问题讨论】:

  • 你能发布你当前的代码吗?

标签: vba excel


【解决方案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

【讨论】:

  • 我对一组过滤数据进行了尝试,包括一个隐藏行,当过滤器被删除时,上面的行取消隐藏该行。
  • @davidmneedham 谢谢!我通过设置一个新集合并向集合添加隐藏行然后在最后重新隐藏它们来作为您的答案。效果很好!
猜你喜欢
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多