【问题标题】:VBA Excel Formula QuotationmarksVBA Excel公式引号
【发布时间】:2017-08-30 19:28:56
【问题描述】:

您好,我在使用 VBA 时遇到了一些问题。 我试图在这样的单元格中写一个公式

ActiveWorkbook.Sheets(1).range("I3").Formula = "=IF(H3<TODAY();" & Chr(34) & "closed" & Chr(34) & ";IF(G3>TODAY();" & Chr(34) & "open" & Chr(34) & ";" & Chr(34) & "in stock" & Chr(34) & "))"

我认为问题在于引号。它给了我错误消息运行时错误'1004':应用程序定义的或对象定义的错误。 提前谢谢你

【问题讨论】:

  • ; 替换为, vba 是美式英语格式。
  • 删除 Chr(34) 并将 ; 更改为 ,
  • 更改为 , 而不是 ; 作为列表分隔符或使用 .FormulaLocal。 VBA 非常以 EN-US 为中心。
  • 转义双引号,像这样debug.print "=IF(H3&lt;TODAY();""closed"";IF(G3&gt;TODAY();""open"";""in stock""))" ....打印这个...=IF(H3&lt;TODAY();"closed";IF(G3&gt;TODAY();"open";"in stock"))
  • 谢谢大家的帮助!

标签: vba excel


【解决方案1】:

只是总结所有已经说过的并提供一个可行的解决方案:

ActiveWorkbook.Sheets(1).range("I3").Formula = "=IF(H3<TODAY()," & """closed""" & ",IF(G3>TODAY()," & """open""" & "," & """in stock""" & "))"

变化:

  1. ;, 交换(如@ScottCraner 所述),因为VBA 公式必须以美式英语格式输入。
  2. 删除Chr(34),而是在字符串中使用两个",在VBA编写公式时有效地插入一个"。由于字符串本身以" 开头,因此每次都会导致三个连续的"

更新:

(如评论中所建议的)

ActiveWorkbook.Sheets(1).range("I3").Formula = "=IF(H3<TODAY(),""closed"",IF(G3>TODAY(),""open"",""in stock""))"

【讨论】:

  • 或者没有和号:ActiveWorkbook.Sheets(1).range("I3").Formula = "=IF(H3TODAY (),""打开"",""有货""))"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 2018-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多