FormulaR1C1读数错误

时间:2017-07-12 08:44:43

标签: excel vba excel-vba excel-formula

我在Excel中有一个userform,它将数据添加到表的最后一行。在最后一行的第14列中,我希望excel显示公式,但它总是读取false。如果我拿出拉斯特罗并单独作为一个单独的实体,那么这是完美的。

在示例中它应该给出答案26.5 * 2,当然应该产生53,而不是FALSE,因为RC [-1]是空白的。

Private Sub CommandButton1_Click()

Dim iRow As Long
Dim ws As Worksheet

Set ws = Worksheets("Primary Data")

iRow = ws.Cells.Find(What:="*", Searchorder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

ws.Cells(iRow, 14).Value = FormulaR1C1 = "=IF(RC[-1]="""",RC[-2]*RC[-3],RC[-2]*RC[-3]*(1-RC[-1]))"

End Sub

任何人都可以帮助我解决这个难题。

2 个答案:

答案 0 :(得分:2)

另一个选项,如果在运行此代码之前已存在“K”,“L”和“M”列中的值,则该选项将起作用:

Dim Rng As Range

Set Rng = ws.Cells(iRow, 14)
Rng.Value = IIf(Rng.Offset(, -1) = "", _
                    Rng.Offset(, -2) * Rng.Offset(, -3), _
                    Rng.Offset(, -2) * Rng.Offset(, -3) * (1 - Rng.Offset(, -1)))

答案 1 :(得分:1)

不要ws.Cells(iRow, 14).Value = FormulaR1C1,因为您没有设置值,请使用ws.Cells(iRow, 14).FormulaR1C1 =

Private Sub CommandButton1_Click()

Dim iRow As Long
Dim ws As Worksheet

Set ws = Worksheets("Primary Data")

iRow = ws.Cells.Find(What:="*", Searchorder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

ws.Cells(iRow, 14).FormulaR1C1 = "=IF(RC[-1]="""",RC[-2]*RC[-3],RC[-2]*RC[-3]*(1-RC[-1]))"

End Sub