我为Access表单提供以下代码。似乎SendKeys在打开和关闭表单时通过打开和关闭NumLock键弄乱了我。

由于我不想涉足的正当理由,我真的不想完全隐藏功能区(我希望下拉菜单仍可访问),因此DoCmd.ShowToolbar命令不是我的首选方法。

关于我如何使用SendKeys命令修改下面的代码来完成我想要的工作,是否有人有任何建议?

使用Access 2007这样的命令

CommandBars.ExecuteMso "MinimizeRibbon"

对我不可用。

顺便说一下,数据库将是分布式的,因此解决方案必须包含在数据库中。
Private Sub Form_Close()

' Unhide navigation pane
    DoCmd.NavigateTo "acNavigationCategoryObjectType"
    DoCmd.Maximize

' Maximize the ribbon
RibbonState = (CommandBars("Ribbon").Controls(1).Height < 75)

Select Case RibbonState
    Case True
        SendKeys "^{F1}", True
    Case False
        'Do nothing, already maximized
End Select
End Sub

Private Sub Form_Load()
' Hide navigation pane
    DoCmd.NavigateTo "acNavigationCategoryObjectType"
    DoCmd.Minimize
Debug.Print Application.CommandBars.Item("Ribbon").Height
' Minimize ribbon
RibbonState = (CommandBars("Ribbon").Controls(1).Height < 100)

Select Case RibbonState
    Case True
        'Do nothing, already minimized
    Case False
            SendKeys "^{F1}", False
End Select
End Sub

最佳答案

这是Microsoft VBA中的错误。但是有一种解决方法。

使用F8遍历宏并找到将其关闭的位置。通常在SendKeys之后。

然后添加一个
Sendkeys "{NUMLOCK}", True在行后可以反转效果。

如果找不到,只需将其添加到末尾,当它完成时,它将返回。希望如果您在显示/隐藏过程中添加它,它将可以使用。

关于vba - SendKeys通过Access窗体中的VBA代码弄乱了我的NumLock key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25977933/

10-11 20:21