我已经设置了一个新的、空的、无模式的用户表单,用最少的代码来解决我的问题。
当工作簿打开时,执行以下代码来隐藏 Excel 并显示用户窗体。这是工作簿的唯一代码。
Private Sub Workbook_Open()
UserForm1.Show
If Application.Windows.Count <> 1 Then
Application.Windows("test.xlsm").Visible = False
Else
Application.Visible = False
End If
End Sub
我有一个空的用户表单,只有一个按钮。该用户表单的唯一代码是:
Private Sub CommandButton1_Click()
Application.Windows("test.xlsm").Visible = True
Application.Visible = True
Unload Me
End Sub
最后一件事是第一个工作表上的按钮,用于启动与打开工作簿时相同的过程。其代码:
Sub Button1_Click()
UserForm1.Show
If Application.Windows.Count <> 1 Then
Application.Windows("test.xlsm").Visible = False
Else
Application.Visible = False
End If
End Sub
现在我的问题是:
当我打开工作簿时,用户窗体会显示,但 Excel 和活动窗口也保持可见。但是,如果我单击工作表上的按钮,Excel 或窗口将按其应有的方式隐藏。此外,在加载所有内容后,Excel(而不是用户窗体)获得焦点。
我第一次运行这个,效果很好。我怀疑更改编辑器中的 ShowModal 设置以某种方式搞砸了,但这只是我的猜测。无论如何,无论现在的模式设置如何,它都不再按预期工作。
如果我只是跑
Application.Visible = False
Excel 仍然保持可见,而不是“if”子句,当然活动窗口也是可见的。
这让我抓狂。
我缺少什么?
编辑:链接到我的测试文件:我的 Dropbox 上的测试文件 https://www.dropbox.com/s/2jz52956valr0yi/test.xlsm?dl=0可能需要启动两次,因为当宏在启动时被阻止并且仅在 Excel 完全加载后才激活时,代码将按预期工作。
编辑:我能够在 Excel 2010 电脑上对此进行测试,并且问题不存在。因此,这可能与较新的 Office 应用程序处理内容的方式有关。