【发布时间】:2022-01-07 12:24:25
【问题描述】:
我的问题的目的是找到一个特定的值(文本),然后在 For/Each 循环中引用整行(或者甚至更好的是仅在我的活动单元格右侧使用的范围)。
第一部分可以很好地找到我的值,但是,用于定位活动单元格行的代码(因此 find 函数找到的单元格)还不能工作:
Sub Search()
Dim cell As Range
Dim Count As Long
Set cell = Cells.Find(what:="Planned Supply at BP|SL (EA)", LookIn:=xlValues, lookat:=xlWhole)
For Each cell In ActiveCell.EntireRow
If cell.Value = "0" Then
Count = Count + 1
End If
Next cell
Range("I1").Value = Count
End Sub
【问题讨论】:
-
为什么你认为
ActiveCell对应找到的cell?它不是。ActiveCell不会被Cell.Find更改。 -
@Storax 哦,谢谢,很高兴知道!在这种情况下,我将如何引用找到的单元格行?
-
使用
For Each cell将使Set cell = Cells.Find(...无用。您应该使用不同的变量而不是cell。cel,例如。因此,您应该声明Dim cell As Range, cel as Range并使用cel进行迭代。然后,在您尝试迭代的行中是否有字符串看起来像数字?否则,您应该使用If cell.Value = 0 Then。没有双引号。并且不要迭代整行。如果范围内没有空格,可以使用If cel.Value = "" Then Exit For,或者判断哪一列是最后一列。 -
@FaneDuru 谢谢!实际上,我之前有两个变量作为 Range,但不知道如何引用“单元格”的位置以遍历它的行。目前,迭代更多的是用于进一步代码的占位符,但感谢您的提示,您是对的!