【发布时间】:2021-06-16 00:22:16
【问题描述】:
我已经使用 Visio VBA 工作了几年。我使用 RUNMACRO() 或 CALLTHIS() 函数将形状的 ShapeSheet 中的参数传递给 VBA 中的几个过程。
我要么传递纯字符串,要么传递 ShapeSheet 中不同公式的值。我传递给我的程序的最常见参数是形状的 ID()。
在 Windows:https://support.microsoft.com/en-us/topic/march-15-2021-kb5001566-os-build-18363-1441-out-of-band-23c4c824-8638-43e9-a381-ff58213ae6fe 的补丁更新后,我不再能够将参数从 Shape 的 ShapeSheet 传递到我在 VBA 中的过程。每当我使用 RUNMACRO 或 CALLTHIS 时,我传递的所有参数,即使它们是纯字符串,在我的程序端,我得到的一切都是“”,空白信息。
有没有办法知道这是一个错误还是故意的,也许是一种安全措施?
这是一个简单的示例过程:
Public Function HelloWorld(Number As Integer)
If Number = 1 Then
MsgBox ("Hello World 1")
End If
If Number = 2 Then
MsgBox ("Hello World 2")
End If
End Function
并且这个过程在 Shape 的 EventDblClick 中被调用:
RUNMACRO("HelloWorld(1)","Test")
触发EventDblClick时Number的值保持为null,忽略RUNMACRO函数中发送的参数为1。由于HelloWorld()函数中的Number参数不是可选的,因此会触发编译错误留言
“参数不是可选的”
【问题讨论】:
-
在帖子中包含您的代码将帮助读者消除许多可能性。请edit您的帖子向我们展示您的代码是如何传递这些参数的。
-
感谢提示,已添加示例代码。
标签: vba parameter-passing procedure shapes visio