Vba MSAccess-最小化工具栏功能区OnLoad()?
我正在寻找一种可靠的方法来最小化OnLoad()事件期间默认的MSAccess工具栏功能区 我意识到可以完全隐藏工具栏,但这并不是我想要做的-我只想最小化功能区:Vba MSAccess-最小化工具栏功能区OnLoad()?,vba,ms-access,Vba,Ms Access,我正在寻找一种可靠的方法来最小化OnLoad()事件期间默认的MSAccess工具栏功能区 我意识到可以完全隐藏工具栏,但这并不是我想要做的-我只想最小化功能区: DoCmd.ShowToolbar "Ribbon", acToolbarNo 'Hides the full toolbar DoCmd.ShowToolbar "Ribbon", acToolbarYes 'Show 我尝试了两种方法,成功率参差不齐: 在Access 2010和2013(VB7)中: 早期版本: Se
DoCmd.ShowToolbar "Ribbon", acToolbarNo 'Hides the full toolbar
DoCmd.ShowToolbar "Ribbon", acToolbarYes 'Show
我尝试了两种方法,成功率参差不齐:
在Access 2010和2013(VB7)中:
早期版本:
SendKeys "^{F1}", False
这两种方法似乎都可以在会话之间切换。是否有方法确定当前状态,然后应用适当的代码
我有访问权限的用户:2007、2010、2013
谢谢你的建议
标记在MSDN上查看此答案。他分享了一些不同的方法,包括一个示例数据库 例如。 在Access 2010中,您可以通过以下方式更改功能区状态:
CommandBars.ExecuteMso "MinimizeRibbon"
他将以下内容链接到:
根据所使用的访问权限,您可能会使用不同的功能
从-:
下面是我实现的一个片段:
Select Case SysCmd(acSysCmdAccessVer)
Case 7: accVer = "95"
Case 8: accVer = "97"
Case 9: accVer = "2000"
Case 10: accVer = "2002"
Case 11: accVer = "2003"
Case 12: accVer = "2007"
Case 13: accVer = "Pirated!"
Case 14: accVer = "2010"
Case 15: accVer = "2013"
Case Else: accVer = "Unknown"
End Select
RibbonState = (CommandBars("Ribbon").Controls(1).Height < 100)
Select Case RibbonState
Case True
'Do nothing, already minimized
Case False
If accVer > 13 Then
CommandBars.ExecuteMso "MinimizeRibbon"
Else
SendKeys "^{F1}", False
End If
End Select
选择Case SysCmd(acSysCmdAccessVer)
案例7:accVer=“95”
案例8:accVer=“97”
案例9:accVer=“2000”
案例10:accVer=“2002”
案例11:accVer=“2003”
案例12:accVer=“2007”
案例13:accVer=“盗版!”
案例14:accVer=“2010”
案例15:accVer=“2013”
案例:accVer=“未知”
结束选择
RibbonState=(命令栏(“Ribbon”)。控件(1)。高度<100)
选择Case RibbonState
情况属实
“什么都不做,已经最小化了
案例错误
如果accVer>13,则
commandbar.ExecuteMso“MinimizeRibbon”
其他的
SendKeys“^{F1}”,False
如果结束
结束选择
Access 2010及更高版本您应该在启动表单中执行此操作。如果只使用ExecuteMso行,则每次打开窗体时,它都会切换功能区。要始终在启动时最小化功能区,请使用以下代码
If CommandBars("ribbon").Height > 100 Then
CommandBars.ExecuteMso "MinimizeRibbon"
End If
希望这对像我这样正在寻找答案的人有所帮助
Dave刚刚搬到Access 2016。我的数据库使用与Dave Stuart提供的代码类似的代码。看起来最小化的ribbon现在的高度为“102”,因此使用了(例如):
子切换功能区(可选显示)
如果我不喜欢(表演),那么
CommandBars.ExecuteMso“MinimizeRibbon”切换
ElseIf Show=则为真
如果命令栏(“功能区”)。高度<100,则
commandbar.ExecuteMso“MinimizeRibbon”
如果结束
ElseIf Show=False则
如果命令栏(“功能区”)。高度>100,则
commandbar.ExecuteMso“MinimizeRibbon”
如果结束
如果结束
端接头
完美!我检测Access版本和RibbonState,然后使用相应的ExecuteMSO或sendKeys命令。注意:检测MSAccess 2013需要“案例15”。如果accVer>13,则
-accVer在此处保留一个字符串,以供参考SysCmd(acSysCmdAccessVer)
=应用程序。版本
感谢您修复复制粘贴错误。不确定我的sub/end如何在代码之外结束。:)
Select Case SysCmd(acSysCmdAccessVer)
Case 7: accVer = "95"
Case 8: accVer = "97"
Case 9: accVer = "2000"
Case 10: accVer = "2002"
Case 11: accVer = "2003"
Case 12: accVer = "2007"
Case 13: accVer = "Pirated!"
Case 14: accVer = "2010"
Case 15: accVer = "2013"
Case Else: accVer = "Unknown"
End Select
RibbonState = (CommandBars("Ribbon").Controls(1).Height < 100)
Select Case RibbonState
Case True
'Do nothing, already minimized
Case False
If accVer > 13 Then
CommandBars.ExecuteMso "MinimizeRibbon"
Else
SendKeys "^{F1}", False
End If
End Select
If CommandBars("ribbon").Height > 100 Then
CommandBars.ExecuteMso "MinimizeRibbon"
End If
If CommandBars("ribbon").Height > 120 Then
CommandBars.ExecuteMso "MinimizeRibbon"
End If
Sub ToggleRibbon(Optional Show)
If IsMissing(Show) Then
CommandBars.ExecuteMso "MinimizeRibbon" 'Toggle
ElseIf Show = True Then
If CommandBars("ribbon").Height < 100 Then
CommandBars.ExecuteMso "MinimizeRibbon"
End If
ElseIf Show = False Then
If CommandBars("ribbon").Height > 100 Then
CommandBars.ExecuteMso "MinimizeRibbon"
End If
End If
End Sub