Excel 如果符合vba标准,如何将范围设置为可变列并删除整行
我有一个计数器,它将根据标题名称标识特定列。 该计数器是变量“k”,k=5 现在在我的代码中,我需要它引用该列作为我的范围,以便我可以删除满足特定条件的整行 我有两个问题: 1.我的射程没有设定。我不想硬编码范围列 2.我的循环没有运行Excel 如果符合vba标准,如何将范围设置为可变列并删除整行,excel,vba,performance,optimization,Excel,Vba,Performance,Optimization,我有一个计数器,它将根据标题名称标识特定列。 该计数器是变量“k”,k=5 现在在我的代码中,我需要它引用该列作为我的范围,以便我可以删除满足特定条件的整行 我有两个问题: 1.我的射程没有设定。我不想硬编码范围列 2.我的循环没有运行 Dim physicalstr As String physicalstr = "Physical" Dim physrange As Range Set physrange = ShtTwo.Columns(k) For Each cell In physr
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
)。反正你也不需要
删除行或列时,必须向后循环以避免跳过行。要向后循环,在循环中使用计数器变量比使用范围更容易
还有,你真的需要浏览所有的百万行吗?考虑使用<代码>查找< /代码>或<代码>自动筛选器>代码>以获得更有效的代码。
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