我在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
任何人都可以帮助我解决这个难题。
答案 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