在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用作范围,而不是电子表格中的“单词”?

在这种情况下,使用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)"