gpt4 book ai didi

Excel VBA - 检查过滤表是否返回任何结果

转载 作者:行者123 更新时间:2023-12-02 07:46:04 24 4
gpt4 key购买 nike

我有一个宏,可以过滤表格(在代码中作为 ListObject),然后将 DataBodyRange 中的可见单元格复制到单独的表格中。除非过滤操作删除所有数据(即表只有标题行而没有其他数据),否则代码可以正常工作。

有没有一种巧妙的方法来检查是否有任何行可见?如果可能的话,我想避免错误简历条款,但我正在努力想其他办法?

我在下面添加了一些伪代码来说明我的意思,任何帮助将不胜感激!

亚当

If TargetTable.DataBodyRange.VisibleRows.Count > 0 Then
TargetTable.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy Destination:=OutputPasteRange
End If

最佳答案

使用表的Range对象,而不是DataBodyRange。然后,检查并确保 .SpecialCells(xlCellTypeVisible).Rows.Count > 1

Sub TestEmptyTable()
Dim tbl As ListObject
Dim outputPasteRange As Range
Dim tblIsVisible As Boolean

Set tbl = ActiveSheet.ListObjects(1)
Set outputPasteRange = Range("B15")

If tbl.Range.SpecialCells(xlCellTypeVisible).Areas.Count > 1 Then
tblIsVisible = True
Else:
tblIsVisible = tbl.Range.SpecialCells(xlCellTypeVisible).Rows.Count > 1
End If

If tblIsVisible Then
tbl.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy _
Destination:=outputPasteRange

Else:
MsgBox tbl.Name & " has been filtered to no visible records", vbInformation

End If

End Sub

关于Excel VBA - 检查过滤表是否返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16087753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com