我正在创建一个excel应用程序,当用户转到特定工作表时,该应用程序将打开用户窗体。当用户单击此工作表时,将显示该表单。但是,我不希望用户能够看到表单中的内容。我只是想让它在没有滞后的情况下打开或者已经加载到那张表中。有没有办法做到这一点?
感谢。
答案 0 :(得分:2)
以下内容尽可能接近您所寻求的内容。
我创建了一个默认名称为UserForm1
的表单。我在ThisWorkbook
中包含了以下代码。
如果用户点击“Sheet2”标签,代码会加载UserForm1
,最大化并显示它。退出表单后,代码将切换为“Sheet3”。
这与您的规范不完全匹配,因为您可以在表单出现之前看到“Sheet2”几分之一秒。我试过预加载表单。我尝试在SheetDeactivate事件例程中关闭屏幕更新,而不是再次打开它,直到我退出SheetActivate事件例程。但是我没有尝试过任何阻止这种短暂闪光的事情。
尝试使用此代码并确定它足够好。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Sheet2" Then
Load UserForm1
With UserForm1
.Width = Application.Width
.Height = Application.Height
.Show
End With
Application.EnableEvents = False ' Surpress SheetActivate event
Worksheets("Sheet3").Activate
Application.EnableEvents = True
End If
End Sub
答案 1 :(得分:2)
您可以先隐藏工作表中的所有单元格:
Worksheets("Sheet3").Cells.EntireRow.Hidden = True
Worksheets("Sheet3").Cells.EntireColumn.Hidden = True
MyUserForm.Show 'You can show modally here if you like
当您准备再次向用户显示内容时,您可以使用:
MyUserForm.Hide
Worksheets("Sheet3").Cells.EntireRow.Hidden = False
Worksheets("Sheet3").Cells.EntireColumn.Hidden = False
这里的优势在于,您不会在此过程中丢失行和列的高度和宽度 - 它们将恢复为原始格式。
看起来像这样: