Excel VBA表格滞后
我正在创build一个excel应用程序,当用户转到特定工作表时,将打开一个用户窗体。 当用户点击这个表单时,表单出现。 但是,我不希望用户能够看到工作表中的内容。 我只是希望它打开没有滞后或已经加载在该表中。 有没有办法做到这一点?
谢谢。
以下是尽可能接近你所寻求的。
我创build了一个默认名称为UserForm1
。 我在下面的代码中包含了ThisWorkbook
。
如果用户点击“Sheet2”选项卡,代码将加载UserForm1
,最大化并显示它。 当表格退出时,代码切换到“Sheet3”。
这与您的规格不完全一致,因为您可以在窗体出现前几秒钟内看到“Sheet2”。 我已经尝试了预加载的forms。 我试过closuresSheetDeactivate事件例程中的屏幕更新,而不是再次打开它,直到我退出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
您可以先隐藏工作表中的所有单元格:
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
这样做的好处是,在这个过程中,不会丢失行和列的高度和宽度 – 它们将恢复到原始格式。
看起来像这样: