Excel Sendkeys无法正常工作

时间:2014-09-01 10:28:08

标签: excel vba excel-vba

我有以下代码,应尽量减少Excel 2010功能区。我放在了 workbook_open事件代码:

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

然而,当我运行它时,它会打开excel帮助!我试过删除括号但得到相同的结果。

有什么想法吗?

欢呼声

2 个答案:

答案 0 :(得分:1)

我在这里猜测你是在尝试在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

您可以尝试保存工作簿,然后关闭它并打开它(因为您已经设置为在workbook_open上运行),我认为没有理由不这样做

答案 1 :(得分:1)

你可以尝试跟随,隐藏功能区:

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