Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如果符合vba标准,如何将范围设置为可变列并删除整行_Excel_Vba_Performance_Optimization - Fatal编程技术网

Excel 如果符合vba标准,如何将范围设置为可变列并删除整行

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

我有一个计数器,它将根据标题名称标识特定列。 该计数器是变量“k”,k=5

现在在我的代码中,我需要它引用该列作为我的范围,以便我可以删除满足特定条件的整行

我有两个问题: 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
)。反正你也不需要

删除行或列时,必须向后循环以避免跳过行。要向后循环,在循环中使用计数器变量比使用范围更容易

还有,你真的需要浏览所有的百万行吗?考虑使用<代码>查找< /代码>或<代码>自动筛选器>代码>以获得更有效的代码。

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