限制用户与工作簿的交互 - 隐藏工作簿/仅显示用户表单

问题描述

是否可以使用 ThisWorkbook.Application.Visible = False 获得相同的效果,但仅适用于一个工作簿。我的意思是,我想将用户交互仅限于 UserForm,但我需要访问其他工作簿。目前此功能会导致隐藏工作簿,但在打开另一个 excel 文件后 - 用户表单中的所有对象均不可用。

Private Sub Workbook_open()
ThisWorkbook.Application.Visible = False
Starter.Show modeless
End Sub

感谢您的支持

解决方法

请创建一个表单,让我们说“Starter”,具有(至少)一个按钮(“btExit”),复制其代码模块中的下一个代码并显示它。如果讨论中的表单在 InitializeTerminate 事件中已经有一些代码,请也添加以下代码行:

Option Explicit

Private Sub btExit_Click()
    Unload Me
End Sub

Private Sub UserForm_Initialize()
    ThisWorkbook.Windows(1).Visible = False
End Sub

Private Sub UserForm_Terminate()
    ThisWorkbook.Windows(1).Visible = True
End Sub

因此,您可以通过这种方式简单地使用工作簿 Open 事件:

Private Sub Workbook_Open()
   Starter.Show vbModeless
End Sub