我有一个用户表单,没有几个按钮可以运行不同的宏。在宏执行结束时,它会隐藏用户。我用以下代码重新设置了userform的“关闭”按钮:
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个工作簿。
现在,当我按下键组合(工作簿C被激活时),它会激活其他工作簿(我首先启动用户的工作簿),然后显示userfrom。尽管当我按下用户上的“一些”按钮时,它会运行相关的宏,但是会激活首先启动表单的工作簿。
我希望在按下这个键组合以显示userfrom的地方激活相同的工作簿(因此它不会转到以前的工作簿)。请帮帮忙
“守则”:
这是关键组合,并已保存在Microsoft对象的ThisWorkbook中。
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现在,我第一次像前面说的那样,在某些工作簿上运行宏(通过第一次调用userform并单击它上的一个按钮),然后当我转到其他工作簿,然后再按这个键组合时,当我第一次使用这个东西时,它会带我回到第一个工作簿,当我按下突出显示按钮时,它会突出显示我按下键组合的工作簿,但最后不知道为什么第一个工作簿会自动被激活。
请参考下面的工作簿链接,请打开2-3个新的工作簿,然后一起试用。
https://www.dropbox.com/s/952lrsrsglt9f6y/Test%20Book.xlsm?dl=0
发布于 2015-02-21 22:28:09
作为对象的所有用户表单。每次运行时将它们分开,使它们具有独立的实例。尝尝这个
Private Sub LoadMenu()
Dim frmTemp as MainMenu
Set frmTemp = New MainMenu
frmTemp.Show
Unload frmTemp
End Sub
https://stackoverflow.com/questions/28645896
复制相似问题