VBA调试打印产生意外和看似随机的输出

Slo*_*ner 12 excel vba excel-vba word-vba

任何人都可以对此有所了解.在MS Word VBA中,我有一个简单的Sub,它产生了意想不到的结果.[编辑:此问题已在MS Word的几个不同安装上重现,但到目前为止只有Win10]

Repro环境:

  • Win10,Word 2010(32位)PC
  • Win10,Word 2010(32位)VM-Azure
  • Win10,Word 2016(32位)PC
  • Win10,Word 2010(64位)VM-Azure
  • Win10,Word 2016 365 @VincentG
  • Win10,Word 2007(32位)@Ambie
  • Win10(64),Word XP @ThunderFrame
  • Win10(64),Excel XP @ThunderFrame
  • Win8.1(64),Word 2013 @miroxlav(Win10以外的第一个版本)
  • Win8.1(64),Office 2016(32)@GSerg
  • Win10(64),Word 2007(x86)@PartricK
  • Win10(64),Excel 2007(x86)@PartricK

但没有责备:

  • Win7(64),Word 2007(32位)VM Azure
  • Win7(64),Word 2010(32?)@ JohnKoleman
  • Win7(64),Word 2007(32)@Slai
  • Win7(64),Word 2003(32)@GSerg
  • WinXP(32),Word 2010(32)@GSerg
  • Win7(64),Office 2010(32)

重现步骤:打开新的Word文档打开IDE(Alt + F11)输入此代码

Option Explicit

Sub test()
Dim i As Integer
For i = 1 To 100
Debug.Print vbCr
Next
End Sub
Run Code Online (Sandbox Code Playgroud)

运行测试Sub.

每次循环运行时我的输出都会有所不同:

]Œ[p^"î;{Ñ[

]Œ[p^"î;{Ñ[

\ÒZžUÖè;qÑZ
Run Code Online (Sandbox Code Playgroud)

要么

ÿÿ

þþ@øø”¶(3

ÿÿ
Run Code Online (Sandbox Code Playgroud)

要么

>O

>O

>O
Run Code Online (Sandbox Code Playgroud)

要么

p

G   P‚j ޶&3@

p
Run Code Online (Sandbox Code Playgroud)

最初我以为我可以识别我的文档中的一些内容,但现在我得到类似的结果,一个空白文档,没有其他任何东西在Word中打开.

直到我在其他Word安装中再现,这是非常令人不安的,现在它更多的是分心和困惑.

关于发生了什么的任何想法?

Thu*_*ame 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
Run Code Online (Sandbox Code Playgroud)