在VBA中的字符串中放置双引号

coo*_*ude 3 excel vba excel-vba double-quotes

我很难理解如何在VBA中的String中放置双引号(").我知道我可以使用该char(34)函数轻松完成此操作.我也明白另一种方法是使用4个双引号:"""".所有这一切都从以前的一个SO帖子:

如何在vba中的字符串中加双引号?

但是,我的问题是......为什么需要4个引号?前两个是逃避,第三个是引用本身,第四个是终止引用吗?或者它以不同的方式工作?关于VBA如何处理这些双引号,我无法找到具体的答案.

我还注意到,如果我尝试在String中添加或删除双引号的数量,Visual Studio将动态添加或删除双引号.例如,我最初有以下字符串:

data = TGName + """ + iterator.Value + """
Run Code Online (Sandbox Code Playgroud)

...在消息框中生成以下内容:

在此输入图像描述

但是,如果我尝试将String(+ """)末尾的第二组双引号从3调整为4,Visual Studio会自动将其调整为5.我最后只能有4个引号.这是消息框中的结果字符串:

在此输入图像描述

消息框中的字符串不是我希望拥有的实际输出,它们纯粹是出于实验目的.但是,我注意到的是,显然需要VBA中String中允许的引号数.有谁知道这个要求是什么?为什么IDE强制在第二个String中插入额外的引用?有人可以解释我所描述的两种情况下实际字符串内容和格式引号之间的差异吗?

一如既往,对此的任何帮助将不胜感激:)

A.S*_*S.H 5

一般规则如下.

第一个双引号(DQ)宣布字符串的开头.之后,一些DQ宣布字符串结束.但是,如果DQ前面有DQ,则会"转义".转义表示它是字符串的字符部分,而不是分隔符.

简单地说,当你在一个字符串中有任意偶数的双引号时,比方说2n,这意味着有n个转义双引号.当数字是奇数时,比方说2n+1,你有n个转义DQ和分隔符.

例子

  """ + iterator.Value + """
' delimiter " + iterator.Value + " delimiter
'           ^ escaped            ^ escaped

  """ + iterator.Value + """"
' delimiter " + iterator.Value + ""  ' (missing enclosing delimiter) 
'           ^ escaped            ^^ both escaped.
Run Code Online (Sandbox Code Playgroud)

在后一种情况下,最后的分隔符丢失,因此VS为您插入了它,并且您有5个DQ.

最后特定情况""""(只有4个DQ),第一个和最后一个是分隔符,里面有一个转义的DQ.这相当于chr(34).