如何在Excel VBA中编写原始string?

我需要通过VBA在Excel工作表中编写一个公式,所以我通过select范围和应用公式,但我的公式太长,它包含很多双引号(“),所以忽略双引号(”)我添加两个双引号(“)

一些时间string写作按照我的愿望或一些时间通过不匹配双引号(“)string得到改变和公式应用是不正确的。

和python一样,我们在string之前写r,它的工作方式如下:

print(r'hello\'s Sam.') hello\'s Sam 

但在Excel VBA中有没有办法编写这样的原始string?

公式如下

 =IF(NOT($E24=""),IF($Q24="0-10V(AI)","Direct (0-10V) = (0-100%)",IF($Q24="2-10V(AI)","Direct (2-10V) = (0-100%)",IF(OR($Q24="PT 1000",$Q24="NTC 20K"),"-50 to 150 Deg C","N/A"))),"") 

我通过VBA来应用它

 Sheet4.Range("R2:R50000").Formula = "=IF(NOT($E2=""" + """),IF($Q2=""" + "0-10V(AI)""" + ",""" + "Direct (0-10V) = (0-100%)""" + ",IF($Q2=""" + "2-10V(AI)""" + ",""" + "Direct (2-10V) = (0-100%)""" + ",IF(OR($Q2=""" + "PT 1000""" + ",$Q2=""" + "NTC 20K""" + "),""" + "-50 to 150 Deg C""" + ",""" + "N/A""" + "))),""" + """)" 

在VBA中没有原始string的概念,但可以使用单引号而不是双引号来编写公式,然后replace它们。 你甚至可以做一个简单的实用function来做到这一点:

 Function r(s As String, Optional QuoteSymbol As String = "'") As String r = Replace(s, QuoteSymbol, """") End Function 

那么你的公式可以简单地插入为:

 Sheet4.Range("R2:R50000").Formula = r("=IF(NOT($E2=''),IF($Q2='0-10V(AI)','Direct (0-10V) = (0-100%)',IF($Q2='2-10V(AI)','Direct (2-10V) = (0-100%)',IF(OR($Q2='PT 1000',$Q2='NTC 20K'),'-50 to 150 Deg C','N/A'))),'')") 

如果你需要在最终公式中使用单引号,那么你可以传递类似back-tick(`)到可选参数QuoteSymbol

说了这么多,你似乎正在做的工作比所需要的多,在一个string中,任何两个连续的双引号被一个双引号replace。 你不需要所有的连接来build立最终的string。

只需添加一个报价(“),例如:公式:

 =text(now(),"mmm dd yyyy") 

VBA:

 Sub InsertTodaysDate() ' This macro will put today's date in cell A1 on Sheet1 Sheets("Sheet1").Select Range("A1").Select Selection.Formula = "=text(now(),""mmm dd yyyy"")" Selection.Columns.AutoFit End Sub 

由于VBA中没有原始string的概念,所以这个问题可以通过在Excel中放入锯齿string来解决,然后在公式中使用它

Sheet4.Range(“R2:R50000”)。Formula =“=”&Cstr(Sheet10.Cells(1,2).Value)

下次只更改单元格中的值和公式得到更新