excel - 如何将筛选的行选择设置为范围
问题描述
过滤行并选择其中一些单元格后,我使用此 vba 代码将选择范围设置为 rng
Dim rng As Range
Set rng = Selection
但是选择包含过滤的单元格,我不想要它们。我怎样才能解决这个问题?
解决方案
给定数据示例:
1. 带有标题的未过滤数据范围是 A1:J20。
2. 第 1 行是标题。
3.第2列或B列标题=“姓氏”
Sub setRangeResultOfFilter
On Error goto errHandler
'declare variables for ranges
Dim oRangeHeadNData as Excel.Range
Dim oRangeDataAll as Excel.Range
Dim oRangeDataTgt as Excel.Range
'check if filter mode is active in the sheet to filter
If ActiveSheet.AutoFilterMode = true then
'deactivate filter mode
ActiveSheet.AutoFilterMode =false
End If
'activate filter mode
Activesheet.Rows(1).Autofilter
'set to range variables the data ranges
Set oRangeHeadNData= Activesheet.Range("A1:J20") 'with header
Set oRangeOfDataAll = Activesheet.Range("A2:J20") 'without header
'filter the range
oRangeHeadNData.AutoFilter Field:=2,Criteria1:="Mormont" 'field 2 is last name
if oRangeHeadNData.Columns(2).SpecialCells(xlCellTypeVisible).Count-1) > 0 then
'filtered data with results
set oRangeDataTgt= oRangeDataAll.SpecialCells(xlCellTypeVisible)
else
'filtered data with out results
set oRangeDataTgt =Nothing
end if
if Not oRangeDataTgt Is Nothing then
'insert the rules you want to add
end if
deActivateFilterMode:
If ActiveSheet.AutoFilterMode = true then
'deactivate filter mode
ActiveSheet.AutoFilterMode =false
End If
exitHandler:
set oRangeHeadNData = Nothing
set oRangeDataAll = Nothing
set oRangeDataTgt =Nothing
Exit Sub
errHandler:
if err.number <> 0 then
Msgbox err.description & " " & err.Number, vbOKOnly+vbInformation, "Set to Range the Filtered Results"
err.clear
end If
goto deActivateFilterMode
End Sub
推荐阅读
- javascript - 将返回的 api 数据追加到表中
- firebase - 访问 Firebase 中的文件时迭代不起作用,但当文件在手机上时它起作用
- python - Python:在字典中查找最小/最大键的复杂性
- flutter - Flutter 在声明 Future 变量并为其提供方法返回值时出错
- python - ValueError: int() 以 10 为底的无效文字:''(串行端口通信字符串到整数错误)
- amazon-web-services - 您不能为现有 IPv4 CIDR 规则指定引用的组 ID。在 AWS 安全组中编辑入站规则时提示
- python - Python。从列表中删除具有其他扩展名的类似项目
- javascript - PDF.JS 自定义查看器在多页查看器中设置默认缩放视口值
- typescript - 在服务器上运行 docker 命令不起作用
- api - .NET:无法从传输连接读取数据:I/O 操作已中止