对于某些操作值,访问 SysCmd 函数未按预期工作
Access SysCmd function not working as expected for some action values
我已阅读 ,这与其他人遇到的问题不同。添加DoEvents
没有效果。
第一个问题
RetVal = SysCmd(4, "Here's an Update!")
清除状态栏文本和仪表,而不是更新文本。我已经使用 ?SysCmd(4, "some text")
.
在 sub 和立即 window 中测试了这个
第二题
更令人困惑的是,SysCmd(3)
和SysCmd(5)
都完全删除了状态栏、文本和仪表。 SysCmd(3)
描述于 documentation:
When the argument is 3, the progress meter is removed from the status bar.
对于 another page 上的 SysCmd(5)
:
When the action argument is 5, the status bar text set by the previous SysCmd() function is removed.
与这些描述相反,整个状态栏都被删除了。
我什至试过测试 the suggested sub from Microsoft:
Function StatusBar ()
Dim RetVal As Variant
RetVal = SysCmd(4, "The rain in Spain falls mainly ...")
MsgBox "Press OK when you are ready to finish!"
RetVal = SysCmd(5)
End Function
测试结果只有消息框。
其他一切正常
据我所知,其他一切正常。这些按预期工作:
RetVal = SysCmd(1, "Beginning Queries...", 10) 'adds the status bar
RetVal = SysCmd(2,1) 'moves the meter
添加常量名称(即 acSysCmdSetStatus
)在 Access 2010 中似乎没有任何效果(因为这是 Access VBA,而不是 VBS)。
很难说。您的代码在 A2013 中运行良好,简化版本也是如此:
Public Function StatusBar()
SysCmd acSysCmdSetStatus, "The rain in Spain falls mainly ..."
MsgBox "Press OK when you are ready to finish!"
SysCmd acSysCmdClearStatus
End Function
显示状态文本,向前弹出消息框,清除状态栏。
我遇到的问题完全是错误的误解。 SysCmd
方法执行 a lot of things 并且有点让人不知所措。
在 Access 的最底部,我们有状态栏。 左下角 上的文字是Status Bar Text。这是通过 acSysCmdSetStatus
(4
的值)和 acSysCmdClearStatus
(5
的值)控制的。
此文字不能与状态栏右下方的Status Bar Progress Meter同时使用。它有自己的文字。
上面的误解是认为状态栏文本操作会更改状态栏进度表的文本。而他们没有。
有关 SysCmd
操作值的参考,请参阅 here。
我已阅读 DoEvents
没有效果。
第一个问题
RetVal = SysCmd(4, "Here's an Update!")
清除状态栏文本和仪表,而不是更新文本。我已经使用 ?SysCmd(4, "some text")
.
第二题
更令人困惑的是,SysCmd(3)
和SysCmd(5)
都完全删除了状态栏、文本和仪表。 SysCmd(3)
描述于 documentation:
When the argument is 3, the progress meter is removed from the status bar.
对于 another page 上的 SysCmd(5)
:
When the action argument is 5, the status bar text set by the previous SysCmd() function is removed.
与这些描述相反,整个状态栏都被删除了。
我什至试过测试 the suggested sub from Microsoft:
Function StatusBar ()
Dim RetVal As Variant
RetVal = SysCmd(4, "The rain in Spain falls mainly ...")
MsgBox "Press OK when you are ready to finish!"
RetVal = SysCmd(5)
End Function
测试结果只有消息框。
其他一切正常
据我所知,其他一切正常。这些按预期工作:
RetVal = SysCmd(1, "Beginning Queries...", 10) 'adds the status bar
RetVal = SysCmd(2,1) 'moves the meter
添加常量名称(即 acSysCmdSetStatus
)在 Access 2010 中似乎没有任何效果(因为这是 Access VBA,而不是 VBS)。
很难说。您的代码在 A2013 中运行良好,简化版本也是如此:
Public Function StatusBar()
SysCmd acSysCmdSetStatus, "The rain in Spain falls mainly ..."
MsgBox "Press OK when you are ready to finish!"
SysCmd acSysCmdClearStatus
End Function
显示状态文本,向前弹出消息框,清除状态栏。
我遇到的问题完全是错误的误解。 SysCmd
方法执行 a lot of things 并且有点让人不知所措。
在 Access 的最底部,我们有状态栏。 左下角 上的文字是Status Bar Text。这是通过 acSysCmdSetStatus
(4
的值)和 acSysCmdClearStatus
(5
的值)控制的。
此文字不能与状态栏右下方的Status Bar Progress Meter同时使用。它有自己的文字。
上面的误解是认为状态栏文本操作会更改状态栏进度表的文本。而他们没有。
有关 SysCmd
操作值的参考,请参阅 here。