对于某些操作值,访问 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。这是通过 acSysCmdSetStatus4 的值)和 acSysCmdClearStatus5 的值)控制的。

此文字不能与状态栏右下方Status Bar Progress Meter同时使用。它有自己的文字。

上面的误解是认为状态栏文本操作会更改状态栏进度表的文本。而他们没有。

有关 SysCmd 操作值的参考,请参阅 here