Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA可以像Python一样接受多行字符串吗?_Python_Vba - Fatal编程技术网

VBA可以像Python一样接受多行字符串吗?

VBA可以像Python一样接受多行字符串吗?,python,vba,Python,Vba,在Python中,我可以使用“”创建多行字符串 例如: x = """ Hello World """" 有没有办法用VBA做到这一点?没有,VBA没有多行字符串。每当我想在VBA中使用多行字符串时,这都会让我发疯,所以我编写了一个小Python脚本,从stdin读取VBA,然后吐出VBA,您可以复制/粘贴到VBA编辑器中 生成多行.py: import fileinput print 'Dim str As String' print 'str = ""' to_print = [] f

在Python中,我可以使用“”创建多行字符串

例如:

x = """

Hello
World """"

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

没有,VBA没有多行字符串。

每当我想在VBA中使用多行字符串时,这都会让我发疯,所以我编写了一个小Python脚本,从stdin读取VBA,然后吐出VBA,您可以复制/粘贴到VBA编辑器中

生成多行.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"

如果您想对大量代码进行注释,这是一个备选方案:

在VBA编辑器中,转到
视图
工具栏
自定义…
,或右键单击工具栏并选择
自定义…

命令
选项卡下,选择左侧的
编辑
菜单

然后大约三分之二的地方有两个图标,
注释块
取消注释块


将它们拖放到工具栏上,然后您就可以轻松地突出显示一段代码,并通过单击按钮将其注释掉和取消注释!

VBA语法应适用于该情况

x=vbCrLf&_
vbCrLf&_
“你好”&vbCrLf&_
“世界”与vbCrLf
但是行连续性是有限制的,对于Excel 2010,我是24行。如果您尝试在下面的字符串中再插入一行行连续性

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&_
“世界”与vbCrLf
然后您会收到错误消息:

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

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&_
换行字符
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&_
“世界”与vbCrLf

太糟糕了!:(谢谢你的快速回答!:)如果你的字符串太长,你可以使用字符串连接
&
,行继续
但是你必须使用
vbNewLine
来生成包含新行字符的字符串。是的,但是VBA中的行继续是有限制的,对吗?