【问题标题】:Excel Macro - Error Inserting Formula that contains double quotes into ActiveCell [duplicate]Excel宏-将包含双引号的公式插入ActiveCell时出错[重复]
【发布时间】:2017-10-05 14:28:55
【问题描述】:

我这里有个情况。有一个 Excel 表,其中单元格 A1 如下所示。

=(IF(ISERROR(VALUE(SUBSTITUTE(OFFSET(B10,-1,0,1,1),".",""))),1,IF(ISERROR(FIND("`",SUBSTITUTE(OFFSET(B10,-1,0,1,1),".","`",1))),VALUE(OFFSET(B10,-1,0,1,1))+1,VALUE(LEFT(OFFSET(B10,-1,0,1,1),FIND("`",SUBSTITUTE(OFFSET(B10,-1,0,1,1),".","`",1))-1))+1)))

我正在编写一个子程序以将相同的公式放入活动/选定的单元格中,但是在这样做时,VBA 在读取“。”时遇到错误。在公式中,它期望

代码复制如下。我只是想输入一个公式,否则它会直接在 excel 中使用,但这次是通过一个按钮,该按钮会将这个公式放入活动单元格中。我该怎么做?

Sub fillmainwbs()
    ActiveCell.Formula = "=(IF(ISERROR(VALUE(SUBSTITUTE(OFFSET(B10,-1,0,1,1),".",""))),1,IF(ISERROR(FIND("`",SUBSTITUTE(OFFSET(B10,-1,0,1,1),".","`",1))),VALUE(OFFSET(B10,-1,0,1,1))+1,VALUE(LEFT(OFFSET(B10,-1,0,1,1),FIND("`",SUBSTITUTE(OFFSET(B10,-1,0,1,1),".","`",1))-1))+1)))"
End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在 VBA 中,公式被指定为字符串。公式中“。”处遇到的第一个双引号。被认为是公式字符串的结尾,然后该行的其余部分在语法上不正确。

    要在 VBA 中的字符串中指定双引号字符(当您的 Excel 公式包含双引号时,您需要这样做),您需要使用双双引号:""

    当 VBA 在字符串中看到 "" 时,会将其视为字符 ",而不是包含公式的字符串的结尾。

    对于公式中的所有双引号,您需要将它们替换为双双引号:

    "=(IF(ISERROR(VALUE(SUBSTITUTE(OFFSET(B10,-1,0,1,1),""."",""""))),1,IF(ISERROR(FIND(""`"",SUBSTITUTE(OFFSET(B10,-1,0,1,1),""."",""`"",1))),VALUE(OFFSET(B10,-1,0,1,1))+1,VALUE(LEFT(OFFSET(B10,-1,0,1,1),FIND(""`"",SUBSTITUTE(OFFSET(B10,-1,0,1,1),""."",""`"",1))-1))+1)))"
    

    请注意,Excel公式中使用的空字符串“”实际上需要在字符串中表示为:

    """"
    

    基本上,在 VBA 中打开字符串后,在打开双引号后遇到的第一个双引号表示字符串的结尾。所有双双引号代表字符串中的双引号字符。

    所以,如果你需要在 VBA 中指定这个公式:

    A1 = ""
    

    它会被指定为这个字符串:

    "A1 = """""
    

    第一个双引号打开字符串。 第 2 个和第 3 个双引号代表公式中的第一个双引号字符 第 4 个和第 5 个双引号代表公式中的第二个双引号字符 第 6 个双引号关闭字符串。

    【讨论】:

    • 谢谢。它帮助了。今日新学。 !!
    猜你喜欢
    • 2018-11-18
    • 1970-01-01
    • 2012-05-17
    • 2010-09-18
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多