如何在Excel VBA中编写原始字符串?

时间:2017-09-09 07:08:35

标签: excel vba excel-vba

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

有些时候字符串按照我的意愿写,或者一段时间不匹配双引号(“)字符串得到改变,公式应用不正确。

在python中我们在字符串之前编写r,它的工作方式如下:

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

hello\'s Sam

但Excel VBA中有没有办法编写这样的原始字符串?

公式如下

=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""" + "))),""" + """)"

3 个答案:

答案 0 :(得分:2)

VBA中没有原始字符串的概念,但您可以使用例如编写公式来编写公式。单引号而不是双引号,然后替换它们。您甚至可以创建一个简单的实用程序函数:

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

说了这么多,你似乎做了比工作更多的工作,因为在一个字符串里面,任何两个连续的双引号都会被一个双引号所取代。您不需要所有这些连接来构建最终字符串。

答案 1 :(得分:0)

只需添加一个引号(“),如下例所示: 式:

=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

答案 2 :(得分:0)

由于VBA中没有原始字符串的概念,因此将此字符串放入excel Cell中可以解决此问题,然后在公式中使用它

Sheet4.Range(" R2:R50000")。公式=" =" &安培; CSTR(Sheet10.Cells(1,2)。价值)

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