任何人都可以对此有所了解.在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
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) 在MS Word中,我添加了一些代码来查看文档是否缺少其数字签名,或者至少我认为我做了.我决定在其他系统上测试之前分享.
Sub test()
If Not ThisDocument.VBASigned Then
Debug.Print "I am NOT signed"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
问题:无论文档是否具有数字签名,上述代码都会产生相同的结果.如果我通过删除我修改代码Not仍然会得到意想不到的结果.
我试图通过以下方式来强迫事情:
If Not CBool(ThisDocument.VBASigned) Then
Run Code Online (Sandbox Code Playgroud)
但更令人惊讶的是,以下代码也失败了:
Sub test()
Dim isSigned As Boolean
isSigned = ThisDocument.VBASigned
If Not isSigned Then
Debug.Print "I am NOT signed"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
即使ThisDocument.VBASignedAND isSigned都是TRUE......
但如果改变isSigned = ThisDocument.VBASigned,isSigned = True那么一切都按预期工作.
谁能证实这一点?有什么想法吗?
以下编辑回答了一些问题:
是的,使用Option Explicit,Yes也试过Debug.
这段代码:
Option Explicit
Sub test()
Dim isSigned As Boolean
isSigned …Run Code Online (Sandbox Code Playgroud)我开始在 VBA 中使用类,并欣赏 SO 上已经提供的一些精彩信息。
据我所知,似乎缺少的是对类中的代码应该做什么的解释,或者,正如我怀疑的那样,不应该做什么。例如:
假设我有一个文档并希望插入/修改一个表格。在这个例子中,我想:
关于“排序”,我认为类模块非常适合根据某些标准确定信息应放入表格中的顺序。
但理想情况下:
或者
还是没关系?如果有首选方法,那么每种方法的优点/缺点是什么?
这里问了一个类似的问题:Is base64 encoding always one to one
显然答案(对类似问题)是肯定的。我已经知道了,但是我很想知道为什么这两个字符串在 Base64 解码后看起来是等效的解释:
cwB0AGQAAG==
cwB0AGQAAA==
还有一件事......当您选择解码后的字符串然后重新编码时,两者都重新编码为相同的值:cwB0AGQAAA==
发生了什么?
在“消息”文件下的 Inno Setup 帮助中,我发现了这一点:
某些消息采用诸如 %1 和 %2 之类的参数。您可以重新排列参数的顺序(即,将 %2 移动到 %1 之前),也可以根据需要复制参数(即“%1 ... %1 %2”)。在带有参数的消息上,使用两个连续的“%”字符嵌入一个“%”。"%n" 创建一个换行符。
在“自定义消息”下:
消息可以采用参数,从 %1 到 %9。您可以重新排列参数的顺序(即,将 %2 移动到 %1 之前),也可以根据需要复制参数(即“%1 ... %1 %2”)。在带有参数的消息上,使用两个连续的“%”字符嵌入一个“%”。"%n" 创建一个换行符。
但是......对于我的生活,我不知道如何使用这些......到目前为止我已经看到 %1 工作(转换为应用程序名称)但是当我将 %1 更改为 %2(最多 - % 9) 它只是显示为 %2, %3, %4 等等....
我只是好奇 - 我如何使用这些参数,它们被分配在哪里?
干杯,
自Word 2010以来MS向MS Word引入的一项新功能是LayoutColumns FootnoteOptions.
因此,下面的代码行在Word 2016中编译: ActiveDocument.Range.FootnoteOptions.LayoutColumns但不在Word 2010中(我没有在Word 2013中测试过).
条件编译器语句似乎没有帮助......除了包含Word 2010的VBA7之外,应用程序版本没有任何内容.
https://msdn.microsoft.com/VBA/Language-Reference-VBA/articles/compiler-constants
所以这不会在Word 2010中编译:
Sub testWd10()
#If Win64 And VBA7 Then
ActiveDocument.Range.FootnoteOptions.LayoutColumns
#End If
End Sub
Run Code Online (Sandbox Code Playgroud)