【发布时间】:2015-02-21 12:38:43
【问题描述】:
我有一个用户窗体,其中有几个按钮可以运行不同的宏。在宏执行结束时,它会隐藏用户。我已经使用以下代码重新设置了用户窗体的关闭按钮:
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
hmm 隐藏用户。现在的挑战是假设有 3 个工作簿。
工作簿 A:启用宏的工作簿,我在其中编写了用户窗体和子例程的代码
工作簿 B:在我按下组合键的地方,这显示了 userfrom
工作簿 C:我想在同一用户的帮助下执行同一宏
现在,当我按下组合键(激活 Workbook C 时)时,它会激活其他工作簿(我首先启动 userfrom 的那个),然后显示 userfrom。虽然当我按下 userfrom 上的某个按钮时,它会运行相关的宏,但会激活首先启动表单的工作簿。
我想在按下此组合键以显示用户来源的位置保持同一个工作簿处于激活状态(因此它不会转到上一个工作簿)。请帮忙
代码:
这是组合键,已保存在 Microsoft Excel Objects 的 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
现在,一旦我在某个工作簿上运行了宏(通过第一次调用用户窗体并单击它上的按钮),就像我之前所说的那样,第一次,然后当我转到另一个工作簿时,然后再次按下这个组合键,当我第一次使用这个东西时,它会带我回到第一个工作簿,当我按下突出显示按钮时,它会突出显示我按下组合键的工作簿,但最后不知道为什么第一个工作簿会自动变为激活。
工作簿请参考以下链接,请打开2-3个新工作簿,然后一起尝试。
https://www.dropbox.com/s/952lrsrsglt9f6y/Test%20Book.xlsm?dl=0
【问题讨论】:
-
要回答这个问题,最好有按快捷键运行的代码。
-
这是它在我的电脑上的工作方式:link。