7 способов скрыть книгу Excel и открыть определенную пользовательскую форму с помощью VBA

В Excel вы можете использовать Visual Basic для приложений (VBA) для управления книгами и создания пользовательских интерфейсов с использованием пользовательских форм. Иногда вам может потребоваться скрыть книгу и отобразить определенную пользовательскую форму, чтобы улучшить взаимодействие с пользователем. В этой статье мы рассмотрим несколько методов достижения этой цели на примерах кода VBA.

Метод 1: свойство Application.Visible
Пример кода:

Sub HideWorkbookAndOpenUserform_Method1()
    Application.Visible = False
    UserForm1.Show
End Sub

Этот метод устанавливает для видимости всего приложения Excel значение False, эффективно скрывая книгу. Затем он отображает определенную пользовательскую форму с помощью метода Show.

Метод 2: коллекция Workbook.Windows
Пример кода:

Sub HideWorkbookAndOpenUserform_Method2()
    ThisWorkbook.Windows(1).Visible = False
    UserForm1.Show
End Sub

Этот метод скрывает книгу, устанавливая для видимости первого окна в коллекции Windowsзначение False. Затем он открывает нужную пользовательскую форму с помощью метода Show.

Метод 3: свойство Application.ScreenUpdating
Пример кода:

Sub HideWorkbookAndOpenUserform_Method3()
    Application.ScreenUpdating = False
    ThisWorkbook.Activate
    ThisWorkbook.Windows(1).Visible = False
    UserForm1.Show
    Application.ScreenUpdating = True
End Sub

Этот метод временно отключает обновление экрана, чтобы предотвратить мерцание во время процесса. Он активирует книгу, скрывает окно, отображает пользовательскую форму и, наконец, восстанавливает свойство обновления экрана.

Метод 4. Функции API
Пример кода:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Sub HideWorkbookAndOpenUserform_Method4()
    Dim hwnd As Long
    hwnd = FindWindow("XLMAIN", Application.Caption)
    ShowWindow hwnd, 0
    UserForm1.Show
    ShowWindow hwnd, 1
End Sub

Этот метод использует функции API для поиска окна Excel и настройки его видимости. Он скрывает книгу, устанавливая состояние окна на 0 (SW_HIDE), а затем отображает пользовательскую форму. Наконец, он восстанавливает состояние окна до 1 (SW_SHOWNORMAL).

Метод 5: пользовательская лента или панель инструментов
Пример кода:

Sub HideWorkbookAndOpenUserform_Method5()
    Application.CommandBars("Ribbon").Enabled = False ' or "Toolbar"
    UserForm1.Show
    Application.CommandBars("Ribbon").Enabled = True
End Sub

Этот метод отключает ленту (или панель инструментов) с помощью свойства Enabledколлекции CommandBars. Затем он отображает пользовательскую форму и после этого снова включает ленту (или панель инструментов).

Метод 6: События рабочей книги
Пример кода:

Private Sub Workbook_Open()
    Me.Windows(1).Visible = False
    UserForm1.Show
End Sub

Этот метод использует событие Workbook_Open, которое возникает при открытии книги. Он скрывает окно книги и автоматически отображает пользовательскую форму.

Метод 7: Метод Application.OnTime
Пример кода:

Sub HideWorkbookAndOpenUserform_Method7()
    Application.OnTime Now, "ShowUserform"
End Sub
Sub ShowUserform()
    ThisWorkbook.Windows(1).Visible = False
    UserForm1.Show
End Sub

Этот метод использует метод Application.OnTimeдля планирования выполнения подпрограммы ShowUserform. Он скрывает окно книги, а затем отображает пользовательскую форму.

Используя эти методы, вы можете сделать книгу Excel невидимой и открыть определенную пользовательскую форму с помощью VBA. Каждый метод предлагает свой подход, что позволяет вам выбрать тот, который лучше всего соответствует вашим требованиям. Поэкспериментируйте с этими методами, чтобы улучшить взаимодействие с пользователем в приложениях Excel.