Excel VBA 从变量构建公式

Excel VBA building a formula from variables

对于这么简单的问题,我深表歉意。我已经用谷歌搜索死了,但我不明白为什么这行不通。我只想添加一个新行并在单元格中插入一个公式。

我的代码是这样的

Private Sub CommandButton1_Click()

    Dim lRow As Long
    Dim lStr As String
    Dim nRow As Long
    Dim nStr As String

    lRow = Cells(Rows.Count, 5).End(xlUp).Row
    lStr = CStr(lRow)
    nRow = lRow + 1
    nStr = CStr(nRow)

    Cells(nRow, 1).Value = Date
    Cells(nRow, 2).Value = ""
    Cells(nRow, 3).Value = 25
    Cells(nRow, 4).Value = 53
    Cells(nRow, 5).Select
    ActiveCell.formula = "=IF(AND(C" & nRow & "=""""|D" & nRow & "="""")|""""|E" & lRow & "-C" & nRow & "+D" & nRow & ")"

End Sub

我试过在公式中使用行的字符串值(使用 nStr 而不是 nRow 等)。

如果我删除开头的“=”符号并将其作为值,它会插入,如果我随后通过 excel 添加“=”,它的计算结果很好,所以我知道格式公式的字符串形式就可以了。

但为什么不插入公式?

我也试过用 r1c1 表示法。

有什么想法吗?

请注意,值 25 和 53 是临时值。最终用户将在这些单元格中手动输入值。

事实证明,即使

=IF(AND(C6=""|D6="")|""|E5-C6+D6) 

如果您手动将其输入到单元格中,则有效,通过 VB 您需要用逗号替换竖线符号。所以将我的公式更改为

ActiveCell.formula = "=IF(AND(C" & nRow & "="""",D" & nRow & "=""""),"""",E" & lRow & "-C" & nRow & "+D" & nRow & ")"

解决了问题