Excel VBA公式为文本问题

在我的Excel 2016 VBA中,我有这样的代码:

Range("M2").Select ActiveCell.FormulaR1C1 = "=IFERROR(IF(E2=""Sgl"",K2,L2),"")" 

当它被放置在单元格中时,公式不是结果。 要手动解决这个问题,我必须从文本更改为常规,实际的代码也需要改变:

单元格M2说: =IFERROR(IF(E2="Sgl",K2,L2),")应该说: =IFERROR(IF(E2="Sgl",K2,L2),"")在右括号之前结束

这是logging(我删除RC的绝对单元格参考,当它不起作用),所以我不知道是什么原因或如何解决它。 任何帮助,将不胜感激。 谢谢

我想你只需要在最后添加额外的报价。 因为引号表示一个string,所以你需要让它们中的两个产生一个 – 这意味着你需要四个才能产生两个。

 Range("M2").Formula = "=IFERROR(IF(E2=""Sgl"",K2,L2),"""")" 

其他注意事项:

  • 你不需要Range().Select然后对抗ActiveCell 。 只需在Range对象上直接调用方法/属性即可
  • 我认为你的情况下, Formula将起作用。 当公式是相对的时候, R1C1是方便的,但是在这种情况下,你正在引用实际的单元格。 你做了什么没有错,但仅供参考

要在IFERROR中生成两个双引号(“”),需要在vbastring中input4个双引号(“”“”)。

我通过移除IFERROR部分来解决这个问题,就好像在前面的列中没有任何值一样,只是把它留空了,而不是显示错误信息:

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