任何人都可以对此有所了解。在MS Word VBA中,我有一个简单的Sub,它产生了意想不到的结果。 [编辑:此问题已在几个不同的MS Word安装中重现,但到目前为止只有Win10]
Repro环境:
但没有责备:
重现的步骤: 打开新的Word文档 打开IDE(Alt + F11) 输入此代码
Option Explicit
Sub test()
Dim i As Integer
For i = 1 To 100
Debug.Print vbCr
Next
End Sub
运行测试Sub。
每次循环运行时,我的输出都会有所不同:
]Œ[p^"î;{Ñ[
]Œ[p^"î;{Ñ[
\ÒZžUÖè;qÑZ
或
ÿÿ
þþ@øø”¶(3
ÿÿ
或
>O
>O
>O
或
p
G P‚j Ž¶&3@
p
最初我以为我可以识别我的文档中的一些内容,但是现在我得到了一个空白文档的类似结果,Word中没有任何其他内容。
直到我在其他Word安装中再现,这是非常令人不安的,现在它更多的是分心&困惑。
关于发生了什么的任何想法?
答案 0 :(得分:2)
不是答案,但这里是.doc格式的doc字的p代码转储:
看起来vbCr没有损坏
_VBA_PROJECT parsing done.
-------------------------------------------------------------------------------
Module streams:
Macros/VBA/ThisDocument - 932 bytes
Macros/VBA/Module1 - 1478 bytes
Line #0:
Option (Explicit)
Line #1:
Line #2:
FuncDefn (Sub test())
Line #3:
Dim
VarDefn i (As Integer)
Line #4:
StartForVariable
Ld i
EndForVariable
LitDI2 0x0001
LitDI2 0x0064
For
Line #5:
Debug
PrintObj
Ld vbCr
PrintItemNL
Line #6:
StartForVariable
Next
Line #7:
EndSub
答案 1 :(得分:2)
@Comintern我早就推测立即窗口实际上是stdIn
/ stdOut
的管道或管道。
如果我们在此基础上工作,那么这个答案有一些见解:
https://stackoverflow.com/a/25843879/5757159
文本流是由行组成的有序字符序列,每行包含零个或多个字符以及终止的换行符。
可能必须在输入和输出上添加,更改或删除字符,以符合在主机环境中表示文本的不同约定。
所以似乎Windows 10,可能在处理流时出错了?
解决方法是确保Debug.Print
语句永远不会以vbCr
,Chr(10)
或Chr$(10)
答案 2 :(得分:0)
我有一个类似的问题:set_position
打印空白行,没有任何内容,或空行和“lls”。
它是随机发生的,我尝试了多次使用相同参数的相同功能,每次打印结果都不同(上述任何一种)。
我找到了另一种选择:
Debug.Print vbCr
这个替代方案破坏了一行代码,但结果确实是一个空行和“我的文本”,没有任何额外的随机文本。