用户表单激活首先启动的表单
我有一个用户窗体,几个button用于运行不同的macros。 在macros的执行结束时,它隐藏了userfrom。 我用下面的代码重新生成了用户窗体的closuresbutton:
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
嗯隐藏userfrom。 现在的挑战是假设有3个工作簿。
-
工作簿A:macros已启用的工作簿,其中我编写了用于userform和子例程的代码
-
工作簿B:在哪里按下组合键,并显示userfrom
-
工作簿C:我想在同一个userfrom的帮助下执行相同的macros
现在当我按下组合键(而工作簿C被激活)时,它将激活其他工作簿(我从第一个用户开始的那个工作簿),然后显示userfrom。 虽然当我按下userfrom上的某个button时,它会运行相关的macros,但会激活首先启动表单的工作簿。
我想保持相同的工作簿激活,这个组合键被按下来显示userfrom(所以它不去以前的工作簿)。 请帮忙
代码:
这是关键的组合,并已保存在Microsoft Excel对象的ThisWorkbook中
Private Sub Workbook_Open() Application.OnKey "%{s}", "LoadMenu" End Sub
这些过程在代码模块中,加载并隐藏userfrom(命名为MainMenu)
Private Sub LoadMenu() MainMenu.Show End Sub Sub hideMenu() MainMenu.Hide End Sub
这是一个例子子程序,当我们点击userfrom上的一个button时,
Sub highlightYellow() selection.Interior.Color = vbYellow hideMenu ' This hides menu after the execution End Sub
现在,我已经在第一次运行一些工作簿(通过第一次调用用户表单,通过点击一个button)上的macros,就像我之前说的,然后当我去其他工作簿,然后再次按下这个键当我第一次使用这个东西的时候,当我按下突出显示button时,它突出显示了我按下组合键的工作簿,但是最后不知道为什么第一个工作簿自动激活。
请参阅下面的工作簿链接,请打开2-3个新的工作簿,然后一起尝试。
https://www.dropbox.com/s/952lrsrsglt9f6y/Test%20Book.xlsm?dl=0
所有的用户forms作为对象。 在每次运行中将它们分开以拥有独立的实例。 尝试这个
Private Sub LoadMenu()
Dim frmTemp as MainMenu
Set frmTemp = New MainMenu
frmTemp.Show
Unload frmTemp
End Sub