excel - 如果满足条件vba,如何将范围设置为变量列并删除整行
问题描述
我有一个计数器,可以根据标题名称识别特定列。该计数器是变量“k”并且k=5
现在在我的代码中,我需要它引用该列作为我的范围,以便我可以删除满足特定条件的整行
我有 2 个问题: 1. 我的范围没有设置。我不想硬编码范围列 2。我的循环没有运行
Dim physicalstr As String
physicalstr = "Physical"
Dim physrange As Range
Set physrange = ShtTwo.Columns(k)
For Each cell In physrange
If ActiveCell.Value = physicalstr _
Then ActiveCell.EntireRow.Delete
Next cell
解决方案
您的代码的直接问题activecell
是永远不会分配,永远不会更改并且不会在循环中引用(其中涉及cell
)。反正你不需要激活。
删除行或列时,您必须向后循环以避免跳过行。要向后循环,在循环中使用计数器变量比使用范围更容易。
另外,你真的需要遍历所有百万行吗?考虑使用Find
orAutofilter
以获得更有效的代码。
Dim physicalstr As String
physicalstr = "Physical"
Dim physrange As Range
Set physrange = ShtTwo.Columns(k)
Dim r As Long
For r = physrange.Count To 1 Step -1
If physrange.Cells(r).Value = physicalstr Then physrange.Cells(r).EntireRow.Delete
Next r
推荐阅读
- postgresql - PostgreSQL:在数字之前对字母进行排序
- c# - ASP.NET 4.6 和 Core 之间的路由差异
- html - 在 Safari 中禁用平铺背景平滑
- jquery - 每次触发切换时,如何从 z-index 中减去 -1?
- ruby-on-rails - ActiveRecord - 如何在保存所有对象之前将(未保存)父级的(未保存)子级与另一个对象关联
- xcode - 删除脚本文件在Xcode中删除另一个
- javascript - 我有这样的代码需要在 href 中使用我的 java 脚本窗口位置值
- c++ - 以下声明有什么区别?
- java - 我如何制作链接的 CharBag(Eclipse Collections)?
- python - 如何选择多索引行?