用户表单激活 sheet 首先启动的地方

Userform activating the sheet where it was initiated first

我有一个用户窗体,其中包含几个用于不同宏的按钮 运行。在宏执行结束时,它隐藏了用户。我已经使用以下代码重新设置了用户窗体的关闭按钮:

Private Sub UserForm_QueryClose _
  (Cancel As Integer, CloseMode As Integer)
'   Prevents use of the Close button
    If CloseMode = vbFormControlMenu Then
        hmm
        Cancel = True
    End If
End Sub

嗯隐藏用户。现在的挑战是假设有 3 个工作簿。

  1. 工作簿 A:启用宏的工作簿,我在其中编写了用户窗体和子例程的代码

  2. 工作簿 B:我在其中按下组合键,这显示用户来自

  3. 工作簿 C:我想在相同用户的帮助下执行相同的宏

现在,当我按下组合键时(激活工作簿 C),它会激活其他工作簿(我首先启动用户的那个),然后显示用户。虽然当我按下用户上的某个按钮时 运行s 相关的宏但是激活了首先启动表单的工作簿。

我想在按下此组合键以显示用户来自的地方保持同一个工作簿处于激活状态(这样它就不会转到上一个工作簿)。请帮忙

代码:

这是组合键,已保存在微软的ThisWorkbook Excel Objects

Private Sub Workbook_Open()
    Application.OnKey "%{s}", "LoadMenu"
End Sub

这些程序在代码模块中,加载和隐藏用户(命名为 MainMenu)

Private Sub LoadMenu()

MainMenu.Show

End Sub



Sub hideMenu()

MainMenu.Hide

End Sub

这是一个示例子例程,它是 运行 当我们单击 userfrom 上的按钮时,

Sub highlightYellow()
    selection.Interior.Color = vbYellow
    hideMenu ' This hides menu after the execution
End Sub

现在,一旦我像我之前所说的那样第一次在某个工作簿上使用 运行 宏(通过第一次调用用户窗体并单击它上面的按钮),然后当我去一些其他的工作簿,然后再次按下这个组合键,当我第一次使用这个东西时,它会让我回到第一个工作簿,当我按下突出显示按钮时,它会突出显示我按下组合键的工作簿,但最后没有知道为什么第一个工作簿自动激活。

练习册请参考下面link,请打开2-3本新练习册,然后一起试一下。

https://www.dropbox.com/s/952lrsrsglt9f6y/Test%20Book.xlsm?dl=0

所有用户表单作为对象。在每个 运行 有独立实例时将它们分开。 试试这个

Private Sub LoadMenu()

Dim frmTemp as MainMenu

Set frmTemp = New MainMenu

frmTemp.Show

Unload frmTemp

End Sub