Excel VBA在函数之间传递变量

时间:2017-01-04 12:38:30

标签: excel-vba vba excel

我正在尝试编写将解析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

2 个答案:

答案 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"