VBA可以采用像Python这样的多行字符串吗?

时间:2014-11-25 18:19:50

标签: python vba

在Python中,我可以使用"""来创建一个多行字符串。

例如:

x = """

Hello
World """"

有没有办法用VBA做到这一点?

4 个答案:

答案 0 :(得分:1)

,VBA没有多行字符串。

答案 1 :(得分:1)

这让我每次想要在VBA中使用多行字符串时都会疯狂,所以我编写了一个Python脚本,它从stdin中读取并吐出VBA,您可以将其复制/粘贴到VBA编辑器中。< / p>

<强> make_vba_multiline.py

import fileinput

print 'Dim str As String'
print 'str = ""'
to_print = []
for line in fileinput.input():
  line = line.strip('\n')
  line_vba = 'str = str & "%s"' % line.replace('"','""')
  to_print.append(line_vba)

all_lines = " & vbCrLf\n".join(to_print)
print all_lines

例如,如果我列出helper的内容时有以下内容:

$ ls -la helper/
total 8
drwxr-xr-x@ 3 ben  staff  102 Apr 19 14:03 .
drwxr-xr-x@ 7 ben  staff  238 Apr 19 14:03 ..
-rw-r--r--@ 1 ben  staff  262 Apr 19 13:56 make_vba_multiline.py

当我将它输入脚本时,我得到:

$ ls -la helper/ | python helper/make_vba_multiline.py
Dim str As String
str = ""
str = str & "total 8" & vbCrLf
str = str & "drwxr-xr-x@ 3 ben  staff  102 Apr 19 14:03 ." & vbCrLf
str = str & "drwxr-xr-x@ 7 ben  staff  238 Apr 19 14:03 .." & vbCrLf
str = str & "-rw-r--r--@ 1 ben  staff  262 Apr 19 13:56 make_vba_multiline.py"

答案 2 :(得分:0)

如果你想评论很多代码,这是另一种选择:

在VBA编辑器中,转到ViewToolbarsCustomise...或右键单击工具栏并选择Customise...

Commands标签下,选择左侧的Edit菜单。

然后大约三分之二的地方有Comment BlockUncomment Block两个图标。

将这些拖放到您的工具栏上,然后您可以轻松访问以突出显示一段代码,并将其注释掉并通过单击按钮取消注释!

答案 3 :(得分:0)

该案例的VBA语法应为

x = vbCrLf & _
    vbCrLf & _
    "Hello" & vbCrLf & _
    "World " & vbCrLf

但是对于Excel 2010来说,续行的限制是有限的。如果您尝试在下面的字符串

中再插入一行换行符
x = vbCrLf & _
    vbCrLf & _
    "Hello" & vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    "World " & vbCrLf

然后你收到错误信息:

Too many line continuations

因此,唯一的方法是将字符串拆分为多个多行线,如下所示:

x = vbCrLf & _
    vbCrLf & _
    "Hello" & vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf
x = x & vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    vbCrLf & _
    "World " & vbCrLf