当用户窗体可见时,Excel 2013模态VBA用户窗体更改Activeworkbook

在Excel 2013(Office 15)中,快捷方式和非常简单的用户表单(用于格式化)的组合有时会导致Active Workbook消失,而另一个工作簿无缘无故地出现(通常仅在更改了活动工作簿后才会发生)。 我试图保持当前的工作簿窗口在前台,而格式化的用户窗体显示,但没有成功。

这是我的代码:

Sub AssignKeys() Application.OnKey "^%,", "MakeBlue" End Sub Sub MakeBlue() frmFormat.Show End Sub 

frmFormat是一个非常简单的小表单,只有一个input格式代码的文本框。 它确实能够在隐藏模式表单后使用以下代码恢复以前激活的工作簿:

 Private Declare PtrSafe Function SetForegroundWindow Lib "USER32" (ByVal hWnd As LongPtr) As LongPtr Public Sub MyAppActive(Handle As Long) Dim lngStatus As LongPtr lngStatus = SetForegroundWindow(Handle) End Sub Private Sub tbShortcut_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If tbShortcut.Text <> "xn" Then Dim mySel As Range Dim myWb As workBook Dim myWnd As Window Set myWnd = ActiveWindow Set mySel = Selection Set myWb = ActiveWorkbook Debug.Print mySel.Address Me.Hide 'mySel.Parent.Parent.Activate myWb.Activate myWnd.Activate MyAppActive myWnd.hWnd end if end sub 

所以一旦表单被隐藏,原来的工作簿窗口被恢复。 但在显示用户窗体时,会显示其他不需要的工作簿窗口。 对于任何提示都会很有帮助。 谢谢!