在执行OnKey代码时停止显示保存对话框SendKeys“ {f2}”存在问题

时间:2019-02-09 07:36:02

标签: excel vba

我已经制作了一个宏,用于将数字格式单元格更改为AlHijri Calendar,并通过OnKey方法对其进行了调用。 但是当按下按键时,会出现“保存”对话框,然后执行了宏。我尝试了很多按键。

Sub ToHijri()    
  With Selection
  .NumberFormat = "[$-1970000]B2dd/mm/yyyy;@"
  End With
Dim Cel As Range
Dim Selectedr As Range
   Set Selectedr = Application.Selection
   For Each Cel In Selectedr.Cells
 SendKeys "{f2}"
 SendKeys "{enter}"
   Next Cel
  'ThisWorkbook.Save
 End Sub

这是一段用于调用宏的代码:

Private Sub Workbook_Activate()
Application.OnKey "%h", "ToHijri"
End Sub        

任何防止显示保存对话的建议。谢谢。

2 个答案:

答案 0 :(得分:1)

我无法复制打开保存对话框的行为,可能是您的办公室区域/语言设置。

但是我发现,要禁用Alt +命令的默认行为,您必须通过excel 4宏隐藏功能区。

我的建议是考虑使用ctrl或其他按键代替Alt。

在这里,他们说不可能仅禁用alt键: https://techcommunity.microsoft.com/t5/Excel/VBA-for-deactivating-just-the-ALT-key/td-p/203577

查看具有解决方法的代码:

Private Sub Workbook_Activate()

    ' Assign the macro to Alt + H
    Application.OnKey "%h", "RunMacroName"

    ' Hide the Ribbon
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",false)"

End Sub



Private Sub Workbook_Deactivate()

    ' Back top it's normal state
    Application.OnKey "%h"

    ' Show back the Ribbon
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",true)"


End Sub

答案 1 :(得分:0)

问题在于,SendKeys "{F2}"OnKey结合使用时,如果同时使用Shift或Alt或Ctrl,则无法正常工作。非常感谢使用F3和OnKey来解决问题。