Excel VBA公式作为文本问题

Excel VBA公式作为文本问题,vba,excel,Vba,Excel,在我的Excel 2016 VBA中,我有以下代码: Range("M2").Select ActiveCell.FormulaR1C1 = "=IFERROR(IF(E2=""Sgl"",K2,L2),"")" 当它被放置在单元格中时,它是公式而不是结果。要手动修复此问题,我必须将文本更改为常规,实际代码也需要更改: 细胞M2表示:=IFERRORIFE2=Sgl,K2,L2, 应该是:=IFERRORIFE2=Sgl,K2,L2, 在右括号前的末尾加上额外的字符 这是我记录的,最初我将RC

在我的Excel 2016 VBA中,我有以下代码:

Range("M2").Select
ActiveCell.FormulaR1C1 = "=IFERROR(IF(E2=""Sgl"",K2,L2),"")"
当它被放置在单元格中时,它是公式而不是结果。要手动修复此问题,我必须将文本更改为常规,实际代码也需要更改:

细胞M2表示:=IFERRORIFE2=Sgl,K2,L2, 应该是:=IFERRORIFE2=Sgl,K2,L2, 在右括号前的末尾加上额外的字符

这是我记录的,最初我将RC移到绝对单元格引用,但它不起作用,所以我不确定是什么原因造成的,也不知道如何解决它。 任何帮助都将不胜感激。
谢谢

我想你只需要在末尾加上额外的报价。因为引号表示一个字符串,所以需要使其中两个产生一个-这意味着需要四个产生两个

Range("M2").Formula = "=IFERROR(IF(E2=""Sgl"",K2,L2),"""")"
其他关注事项:

您不需要设置范围。选择并使用ActiveCell。只需直接在Range对象上调用方法/属性 我认为在你的情况下,公式会起作用。当公式是相对的时,R1C1很方便,但在本例中,您引用的是实际的单元格。你所做的没有错,仅供参考
我想你只需要在最后加上额外的报价。因为引号表示一个字符串,所以需要使其中两个产生一个-这意味着需要四个产生两个

Range("M2").Formula = "=IFERROR(IF(E2=""Sgl"",K2,L2),"""")"
其他关注事项:

您不需要设置范围。选择并使用ActiveCell。只需直接在Range对象上调用方法/属性 我认为在你的情况下,公式会起作用。当公式是相对的时,R1C1很方便,但在本例中,您引用的是实际的单元格。你所做的没有错,仅供参考
我通过删除IFERROR部分修复了这一问题,就好像前面的列中没有值一样,它只是将其保留为空,而不是显示错误消息:

Columns("M:P").Select
Selection.NumberFormat = "General"
Range("M2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-8]=""SGL"",RC[-2],RC[-1])"
Range("M2").Select

我通过删除IFERROR部分修复了这一问题,就好像前面的列中没有值一样,它只是将其保留为空,而不是显示错误消息:

Columns("M:P").Select
Selection.NumberFormat = "General"
Range("M2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-8]=""SGL"",RC[-2],RC[-1])"
Range("M2").Select

要在IFERROR中生成两个双引号,需要在vba字符串文字中放置4个双引号

要在IFERROR中生成两个双引号,需要在vba字符串文本中放置4个双引号

那不可能被记录下来。宏记录器运行时使用的任何公式都将使用R1C1语法,而不是A1。记录的公式如下所示:iferrifr[1]C[3]=Sgl,R[1]C[9],R[1]C[10],。我想有人编辑了它,将R1C1符号改为A1,并在这个过程中去掉了额外的引号。我把它改为去掉RC,因为我认为这可能会在一开始修复它,但它没有被记录下来。宏记录器运行时使用的任何公式都将使用R1C1语法,而不是A1。记录的公式如下所示:iferrifr[1]C[3]=Sgl,R[1]C[9],R[1]C[10],。我想有人编辑了它,将R1C1符号改为A1,并在这个过程中去掉了额外的引号。我把它改为去掉RC,因为我认为这可能会在一开始修复它,但它没有