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 & ")"
解决了问题
对于这么简单的问题,我深表歉意。我已经用谷歌搜索死了,但我不明白为什么这行不通。我只想添加一个新行并在单元格中插入一个公式。
我的代码是这样的
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 & ")"
解决了问题