0

我需要在使用 vba 编码时插入一个公式。

目前的代码行是

=IF(
    AND(
        Compliance="No",
        OR(
            Delivery <> "",
            C31 <> ""
        )
    ),
    "Please Delete Compliance Data",
    IF(
        AND(
            E11="",
            E13="",
            E23="",
            E25="",
            E26="",
            E28="",
            E30="",
            E31=""),
        VLOOKUP(C15,'Extrapolated RV Calculator'!B:S,18,0),
        "Please complete form / SC request"
    )
)"

代码中的文本部分似乎出错了。

任何帮助,将不胜感激。

4

2 回答 2

2

以下是在 VBA 中的字符串中使用引号的四种方法:

  • 将 "" 替换为 Chr$(34)。34是引号的ASCII码
  • 使用 String(2,Chr$(34)) 做双引号
  • 每个使用两个双引号(根据蒂姆的评论)
  • 用不同的方法替换两个双引号,例如工作表函数的 ISBLANK。

这些都不是更好的。我通常使用两个双引号来转义它们。但有时我把很多引号放在一起,很难阅读和维护,所以我会使用不同的方法。这是一个例子:

Dim aFormula(1 To 5) As String

aFormula(1) = "=IF(AND(Compliance=""No"",OR(Delivery<>" & String(2, Chr$(34))
aFormula(2) = ",C31<>" & String(2, Chr$(34)) & ") ),"
aFormula(3) = Chr$(34) & "Please Delete Compliance Data" & Chr$(34)
aFormula(4) = ",IF(AND(ISBLANK(E11),ISBLANK(E13),ISBLANK(E23),ISBLANK(E25),ISBLANK(E26),ISBLANK(E28),ISBLANK(E30),ISBLANK(E31)),"
aFormula(5) = "VLOOKUP(C15,'Extrapolated RV Calculator'!B:S,18,0),""Please complete form / SC request""))"

Sheet1.Range("R13").Formula = Join(aFormula, vbNullString)
于 2013-03-20T12:27:36.953 回答
0

为了将来为您提供支持,当您想在您还不熟悉的 VBA 代码中使用 Excel 中的功能时,我强烈建议您执行以下操作。

转到开发人员菜单,然后按录制宏按钮。

现在在单元格中填写公式,通过按删除清除单元格内容,通过进入单元格并删除所有字符并按回车键清除单元格内容。

现在停止宏。并转到 VBA 窗口。了解如何构建代码来完成这些事情。

每当您想做其他事情时也可以应用此方法,以了解可以使用什么来获得所需的结果,而无需在互联网上浏览很长时间!

还可以在局部变量窗口或调试中观察局部变量。打印您尝试构建的字符串以查看它到目前为止的样子

于 2013-03-20T09:24:27.487 回答