如何在VBA中使用SendKeys调试问题?

时间:2019-02-20 16:17:55

标签: excel vba

所以我试图在Excel中设置双面打印,而发布的其他代码对我不起作用。我尝试对其进行调试,但没有成功,因此决定尝试使用SendKeys设置双面打印选项。代码如下:

Sub SendKeysDuplex()
Dim I As Long
Application.Dialogs(xlDialogPrinterSetup).Show

Application.SendKeys "^p", True
Sleep 5000

For I = 1 To 3
    Application.SendKeys "{TAB}", True
    Sleep 500
Next I
    Application.SendKeys "{ENTER}", True
    Sleep 500
For I = 1 To 4
    Application.SendKeys "{TAB}", True
    Sleep 500
Next I

        'First sets the option to no
    Application.SendKeys "n", True
        'To make sure we get the right yes
    Application.SendKeys "y", True
    'And confirm the setting
    Application.SendKeys ("{ENTER}")
    'Sheet1.PrintOut

End Sub

它可以很好地打开打印菜单-但随后选项卡和输入似乎什么也没做。但是,如果我尝试通过逐步调试代码,它将把密钥发送给VBA编辑器-而不是Excel。

如何调试SendKeys中的问题?关于使用Sendkeys打开菜单,我还需要了解其他内容吗?

我设法通过创建具有单个SendKeys的宏,将这些宏分配给键,然后按顺序按下键,来调试“工作”。 Tab似乎不想在打印对话框中起作用-用sendkey发送时它什么也没做,但是在手动按下它时可以工作。 (???)

1 个答案:

答案 0 :(得分:1)

  1. 仅在 Excel 工作表窗口处于活动状态时运行子菜单,而不是 VBE 窗口处于活动状态。 (实际上,在运行子程序之前,先关闭 VBE
  2. 将所有Sleep命令替换为DoEvents命令