我在网上找到了这个代码,它就像一个魅力:
Sub Auto_Open()
Application.OnKey "{F1}", "WorkbooksHandler"
End Sub
Sub WorkbooksHandler()
On Error Resume Next
If ActiveWorkbook.Sheets.Count <= 16 Then
Application.CommandBars("Workbook Tabs"). _
ShowPopup 500, 225
Else
Application.CommandBars("Workbook Tabs"). _
Controls("More Sheets...").Execute
End If
On Error GoTo 0
End Sub
我按F1键,它会打开所有表格的对话框。我可以选择我想要的纸张,然后就可以了。
如果我稍微更改了代码,请使用:
Sub Auto_Open()
Application.OnKey "^{m}", "WorkbooksHandler"
End Sub
现在,control-m打开,对话框显示了工作表,但是当我点击工作表时,我想excel不会在那里导航。为什么触发器会有所不同,并使执行不起作用?
编辑:顺便说一下,当我用F5手动运行代码时,代码也能正常运行,而不是使用onkey control-m。
答案 0 :(得分:2)
问题似乎是,当与OnKey一起使用时,即使你毫无疑问地释放了密钥,Control键也会在整个命令中持续存在。这对你做的大多数事情都没有影响,但莫名其妙地影响了More Sheets弹出窗口。拿这个代码
Sub Auto_Open()
Application.OnKey "^m", "WorkbooksHandler"
End Sub
Sub WorkbooksHandler()
SendKeys "{RIGHT}"
End Sub
所有这一切都是按右箭头键。但它具有按Ctrl + Right的效果,它会将您带到工作表的边缘(对于空白工作表)。因此,^ m的控制部分通过执行WorkbooksHandler来保持不变。
这也是手动发生的。按住控制键,右键单击工作表导航按钮,选择“更多工作表”,选择一个工作表。当你按下Control时,它不会移动到那张表。
我尝试了所有方式的SendKeys,OnTime和DoEvents,但无法欺骗Excel释放Control键。我敢打赌你可以找到一个可以解决问题的Windows API,但是简单地选择一个不使用Control的组合键可能更容易。
答案 1 :(得分:0)
确保
Sub WorkbooksHandler()
On Error Resume Next
If ActiveWorkbook.Sheets.Count <= 16 Then
Application.CommandBars("Workbook Tabs"). _
ShowPopup 500, 225
Else
Application.CommandBars("Workbook Tabs"). _
Controls("More Sheets...").Execute
End If
On Error GoTo 0
End Sub
粘贴在模块,
中然后
手动编译并运行Auto_Open()
,然后尝试快捷方式