在VBA中,相对于范围编写公式的语法是什么?

时间:2016-01-29 15:19:30

标签: excel vba

在Excel中,我编写了一个简短的脚本,它应该删除每个单元格的第一个字符,其中包含一个“*”符号。到目前为止我所拥有的是

Sub Macro5()

Dim Rng As Range
Dim i As Long
i = 1

While i <= 20000
Set Rng = Range("A" & i)

    If InStr(Rng, "*") > 0 Then
        Rng.Offset(0, 1).Formula = "=Right(Rng,LEN(Rng)-1)"
        i = i + 1
    Else: i = i + 1

End If
Wend
End Sub

调用脚本的行似乎有效,但是放入B列的公式是“= Right(Rng,LEN(Rng)-1)”,它给出了'NAME?'错误。如何定义LEN公式以将Rng用作范围,而不是电子表格中的“单词”?

1 个答案:

答案 0 :(得分:1)

在这种情况下,使用R1C1 type formulae可以让生活更轻松。

Sub RemoveFirstStar()
    Dim rng As Range, c As Range

    Set rng = Range("A1:A2000")

    For Each c In rng.Cells
        If Left(c, 1) = "*" Then
            c.Offset(0, 1).FormulaR1C1 = "=mid(rc[-1],2,1000)"
        End If
    Next c
End Sub

对于您的特定代码示例,请更改IF

之后的行
Rng.Offset(0, 1).FormulaR1C1 = "=Right(RC[-1],LEN(RC[-1])-1)"