【问题标题】:Excel VBA building a formula from variablesExcel VBA 从变量构建公式
【发布时间】:2016-09-09 17:00:08
【问题描述】:

对于这么简单的问题,我深表歉意。我已经用谷歌搜索了这个,我不知道为什么这不起作用。我只想添加一个新行并将一个公式插入一个单元格。

我的代码是这样的

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 是临时值。最终用户将手动将值输入到这些单元格中。

【问题讨论】:

  • | 替换为逗号,。 vba 非常以美国英语为中心,公式必须以标准美国英语格式输入。
  • 哇。那行得通。因此,如果我手动将 =IF(AND(C6=""|D6="")|""|E5-C6+D6) 输入到单元格中,它可以工作,但是通过 VB 我需要使用 =IF(AND(C6 ="",D6=""),"",E5-C6+D6)。谢谢你

标签: excel vba formula


【解决方案1】:

事实证明,即使

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

如果您手动将其输入到单元格中,则可以通过 VB 将管道符号替换为逗号。所以将我的公式更改为

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

解决了问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多