Vba Excel发送键不工作

Vba Excel发送键不工作,vba,excel,Vba,Excel,我有以下代码,可以最小化Excel 2010功能区。我已经在 工作簿\u打开事件代码: Dim iheight As Integer iheight = Application.CommandBars.Item("Ribbon").Height If iheight > 100 Then Application.SendKeys ("^{F1}") End If 但是,当我运行它时,它会打开excel帮助!我试过去掉括号,但得到了同样的结果 有什么想法吗 干杯我在这里胡乱猜测,您正

我有以下代码,可以最小化Excel 2010功能区。我已经在
工作簿\u打开
事件代码:

Dim iheight As Integer
iheight = Application.CommandBars.Item("Ribbon").Height
If iheight > 100 Then
   Application.SendKeys ("^{F1}")
End If
但是,当我运行它时,它会打开excel帮助!我试过去掉括号,但得到了同样的结果

有什么想法吗


干杯

我在这里胡乱猜测,您正在尝试在VBA编辑器中测试此代码?单击播放按钮或按F5

如果在VBA编辑器中进行测试,这将不起作用,因为Ctrl+F1会打开帮助菜单

您需要做的是从excel内部调用例程,因此excel是活动窗口。只需创建一个形状并将其指定为要测试的例程,然后以任何方式调用它

记住
sendkeys
的功能,它只是模仿键盘

你可能会失去括号,尽管它们不会有任何区别

我的测试代码工作正常:

Sub test6()
Dim iheight As Integer
iheight = Application.CommandBars.Item("Ribbon").Height
If iheight > 100 Then
   Application.SendKeys ("^{F1}")
End If
End Sub

Sub MinRibbon()
Call test6 'assigned to a shape on an excel sheet
End Sub

您可以尝试保存工作簿,然后将其关闭并打开(因为您要在
工作簿\u open
上运行此设置),我看不出有任何原因无法使用此设置

您可以尝试以下操作,以隐藏功能区栏:

Sub hideRibbonIfVisible() 
   If RibbonVisibility = 0 Then
      CommandBars.ExecuteMso "MinimizeRibbon" 
   End If
End Sub 

Function RibbonVisibility() As Integer 
   RibbonVisibility = (CommandBars("Ribbon").Controls(1).Height < 100) 
End Function 
Sub-hideribonifvisible()
如果RibbonVisibility=0,则
commandbar.ExecuteMso“MinimizeRibbon”
如果结束
端接头
函数RibbonVisibility()为整数
RibbonVisibility=(命令栏(“Ribbon”)。控件(1)。高度<100)
端函数

据我所知,F1将始终在任何Office-Products中打开帮助。您好,我知道这一点,但此代码发送Ctrl+F1。您是对的,不知怎的,我没有真正注意到^。您好,谢谢Ben。这也行得通。我猜这应该归功于Ron de Bruin的更新:如果你使用这种方法,请小心!只是在另一台电脑上测试了一下,发现了一个错误。“ExecuteMso”行是否取决于可用的特定引用?SilverShotBee,你说得对!它在编辑器中不起作用。我最后做的是在workbook_open中添加一行代码以选择单元格A1。然后在工作表中选择更改事件代码,调用test6。这使色带最小化。非常感谢你的指点。