我正在尝试编写将解析B列的excel VBA代码(分析师登录时间),如果该列为0(如同那天那样),它将更新相邻列以表示NA。目前,以下代码出错了。如果我将单元格(rng,i)中的rng变量更改为数字,那么代码将采用该数字(让我们说4)并将NA放在所有字段中(3到23,所以,C到W)。我认为问题是rng的值没有被传递到内部函数中,但是我不知道如何得到它。
Dim rng As Range
For Each rng In Range("B4:B10")
If rng.Value = 0 Then
For i = 3 To 23
Cells(rng, i).Value = NA
Next i
End If
Next rng
答案 0 :(得分:1)
rng
本身(没有显式属性名称)默认返回.Value
,当0
尝试使用无效的行索引0
时,取而代之行号通过.Row
:
Cells(rng.Row, i).Value = "NA"
如果NA
不是变量而是字符串,请引用它。
非循环替代方案:
If rng.Value = 0 Then Range(rng.Offset(0, 1), rng.Offset(0, 21)).Value = "NA"
答案 1 :(得分:0)
问题出在这里:
td
为什么要给出数字(行号)必须到达的范围?
您需要使用
Cells(rng, i).Value = "NA"