Excel запуск формы при запуске

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#1

24.02.2022 23:38:32

Здравствуйте.
Подскажите, пож-та, как сделать так, что-бы при открытии нужного файла Exel *****.xlsm происходил запуск формы с последующим скрытием данной книги. Для дальнейшей работы должна остаться видимой только форма.
Автозапуск формы получается, но следующая строка скрывает все остальные открытые книги Excel, а нужно чтобы скрывалась только эта книга.

Код
Private Sub Workbook_Open()
   UserForm1.Show
   Application.Visible = False
End Sub

Запись ThisWorkbook.Windows(1).Visible = False оставляет пустое окно Excel.  Exel остается видимым, а нужно действие такое же как при исполнении кода Application.Visible = False, только для данного файла. т.е. для простого пользователя при двойном клике должна открыться только форма. Если на момент запуска открыты другие файлы Excel, они не должны быть затронуты.. Если данный файл запускается первым, то тоже должна быть видна только форма, без пустого Excel.

Изменено: asesja25.02.2022 22:21:18

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#2

25.02.2022 09:45:17

Цитата
asesja написал:
ThisWorkbook.Windows(1).Visible = False после закрытия меняет файл

так Вы при закрытии формы возвращайте видимость окна и все будет ОК.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Александр Моторин

Пользователь

Сообщений: 958
Регистрация: 31.12.2012

#3

25.02.2022 09:45:56

может так?

Код
Private Sub Workbook_Open()
    Application.Visible = False
    UserForm1.Show
    Application.Visible =true
End Sub
 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#4

25.02.2022 10:15:41

1. исправьте:

Код
Private Sub Workbook_Open()
   UserForm1.Show
End Sub

2. Скройте книгу,
3. закройте Excel, на вопрос сохранить — сохраните
4. открывайте, наслаждайтесь

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#5

25.02.2022 11:52:53

Цитата
Дмитрий(The_Prist) Щербаков  написал:
при закрытии формы возвращайте видимость окна и все будет ОК.

Подскажите, как? При каком событии формы? Если файл будет открываться первым, то пустой Excel остается видимым, а нужна только форма. Дописал уточнение.

Изменено: asesja25.02.2022 11:59:53

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#6

25.02.2022 11:53:57

Цитата
Александр Моторин написал:
может так?

Ничего не меняется.

Изменено: asesja25.02.2022 12:00:57

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#7

25.02.2022 11:58:19

Цитата
Ігор Гончаренко написал:
1. исправьте:Код ? 123Private Sub Workbook_Open()   UserForm1.ShowEnd Sub2. Скройте книгу, 3. закройте Excel, на вопрос сохранить — сохраните4. открывайте, наслаждайтесь

Спасибо. Думал что уже получилось то что хотел, но если файл запускать первым, то на фоне все равно фигурирует пустое окно Excel, а нужно чтобы была видна только форма. Дописал уточнение.

Изменено: asesja25.02.2022 12:01:33

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#8

25.02.2022 12:02:23

Цитата
asesja написал:
Если файл будет открываться первым, то пустой Excel остается видимым

так а как Вы хотели-то? Если открыта только одна книга, а Вы и ту скрываете. Да, будет пустое приложение. Определитесь для начала, что при каких условиях должно быть видимым и тогда можно будет решение найти.

Цитата
asesja написал:
а нужно чтобы была видна только форма

а если мы эту книгу открыли не первой? Тогда что?

Цитата
asesja написал:
При каком событии формы?

событие закрытия формы. Есть там такое QueryClose

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#9

25.02.2022 12:46:54

Цитата
написал:
Определитесь для начала, что при каких условиях должно быть видимым и тогда можно будет решение найти.

Дмитрий, дописал уточнение в первом сообщении.
Нужно, чтобы всегда была видна только форма при запуске данного файла (форма из этого файла). Если файл открывается первым, то excel не должен быть виден, только форма. Если открытие файла происходит когда уже открыты несколько других файлов, то при открытии тоже должна запускаться только форма, изменение видимости ранее открытых файлов не должно меняться. Т.е. в какой бы момент пользователь не запустил данный файл всегда должна запускаться (быть видна) только форма.
Не знаю как еще объяснить по другому.

 

Jack Famous

Пользователь

Сообщений: 10846
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#10

25.02.2022 12:51:29

Цитата
asesja: Т.е. в какой бы момент пользователь не запустил данный файл всегда должна запускаться (быть видна) только форма

засуньте форму в нвдстройку и подключите к Excel — теперь форма всегда будет доступна, никакие дополнительные книги не будут открываться и это очень легко и правильно

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#11

25.02.2022 13:11:20

Цитата
написал:
засуньте форму в нвдстройку и подключите к Excel — теперь форма всегда будет доступна, никакие дополнительные книги не будут открываться и это очень легко и правильно

В надстройку не нужно. Нужный мне макрос должен находится в фале и форма должна появляться при его запуске (как будто запускаешь exe в котором при запуске выводится форма)
Если даже поместить в надстройку, то все равно эту форму можно вывести только при открытом excel, а нужно именно при открытии данного файла.
Мне нужно именно как я описал. Может я непонятно объясняю просто?  

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#12

25.02.2022 13:17:41

код в сообщении 4 замените на такой:

Код
Private Sub Workbook_Open()
  Application.Visible = Not (Workbooks.Count = 1 Or _
  (Workbooks.Count = 2 And Workbooks(1).Name = "PERSONAL.XLSB"))
  UserForm1.Show
  Application.Visible = True
  ThisWorkbook.Close False
End Sub

Изменено: Ігор Гончаренко25.02.2022 13:22:34

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#13

25.02.2022 13:27:06

Цитата
asesja написал:
Т.е. в какой бы момент пользователь не запустил данный файл всегда должна запускаться (быть видна) только форма

это никак не вяжется с этим

Цитата
asesja написал:
изменение видимости ранее открытых файлов не должно меняться

Но тем не менее, сделать можно так:

Код
Sub ShowForm()
        Dim lcnt&
    Dim wb As Workbook
    For Each wb In Application.Workbooks
        If wb.Name <> ThisWorkbook.Name Then
            If wb.Windows(1).Visible Then
                lcnt = lcnt + 1
            End If
        End If
    Next
    If lcnt Then 'какие-то книги уже открыты
        ThisWorkbook.Windows(1).Visible = False
        UserForm1.Show
        ThisWorkbook.Windows(1).Visible = True
    Else
        Application.Visible = False
        UserForm1.Show
        Application.Visible = True
    End If
End Sub

осталось понять, что именно делать при закрытии формы — закрывать так же файл или нет.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#14

25.02.2022 13:35:30

Цитата
написал:
код в сообщении 4 замените на такой:

Не работает. Если имеются открытые файлы excel, то при запуске просто моргает окно и закрывается. Если открывать файл первым, то запускается пустой Excel без формы.
На всякий случай уточню, что у меня нет Личной книги макросов, но имеются подключенные надстройки. На разных ПК данная ситуация может отличаться, поэтому нужный макрос будет записан в этом открываемом файле Excel ****.xlsm.

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#15

25.02.2022 13:37:36

Цитата
написал:
осталось понять, что именно делать при закрытии формы — закрывать так же файл или нет.

Дмитрий, да закрывать. Правильно спросили.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#16

25.02.2022 13:47:16

Код
Private Sub Workbook_Open()
    If Workbooks.Count = 1 Then
        Application.Visible = False
    Else
        Me.Windows(1).Visible = False
    End If
    UserForm1.Show
End Sub
 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#17

25.02.2022 13:50:52

Цитата
asesja написал:
да закрывать

Т.е. сами по образцу это сделать не сможете, что ли? :)

Код
Sub ShowForm()
    Dim lcnt&
    Dim wb As Workbook
    For Each wb In Application.Workbooks
        If wb.Name <> ThisWorkbook.Name Then
            If wb.Windows(1).Visible Then
                lcnt = lcnt + 1
            End If
        End If
    Next
    
    If lcnt Then 'какие-то книги уже открыты
        ThisWorkbook.Windows(1).Visible = False
        UserForm1.Show
        ThisWorkbook.Windows(1).Visible = True
        ThisWorkbook.Close False 'если надо закрывать без сохранения
    Else
        Application.Visible = False
        UserForm1.Show
        ThisWorkbook.Close False 'если надо закрывать без сохранения
        Application.Quit
    End If
End Sub

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#18

25.02.2022 13:51:46

Цитата
написал:
Но тем не менее, сделать можно так:

Дмитрий, не работает. Форма открывается вместе с книгой.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#19

25.02.2022 13:54:07

Цитата
asesja написал:
Форма открывается вместе с книгой

с какой именно? Куда и на какое событие вставляли код? Чего от кода ожидаете?
Я лично все проверил — если есть хоть одна открытая книга — то книга с кодом скрывается, остальные остаются видимыми, поверх появляется форма. Если открывается только книга с кодом и нет других видимых книг — то появляется только форма, а Excel полностью скрывается.
А если по сути вопроса — да, форма всегда будет открываться вместе с книгой, т.к. форма внедрена в книгу, она её часть и без книги открываться просто не может по определению.

Изменено: Дмитрий(The_Prist) Щербаков25.02.2022 13:55:30

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#20

25.02.2022 14:01:10

Цитата
написал:
RAN

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

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#21

25.02.2022 14:03:34

Цитата
asesja написал:
если открыть первым файл с макросом, то затем любой следующий открытый файл Excel делает видимым Excel у которого форма

так в условии не было ни слова о том, что надо отслеживать еще и последующие открываемые файлы! Вы сами понимаете, что одним кодом это действие не отследить? Надо писать обработку класса на отслеживание событий приложения, чтобы проверять — если форма открыта, то одно, если нет, то другое…
Плюс вопрос — а как же люди при открытой форме у Вас файлы-то открывают? У меня почему-то не получается. Вопрос на засыпку — форма в модальном режиме открывается или ShowModal = False? Если режим модальный — то даже если файл будет открыт, то показан он будет исключительно после закрытия формы.
В общем — принцип основной вроде бы показан и далеко не в единственном варианте, а под все остальные свои условия постарайтесь написать хоть что-то сами. А когда все условия будут обдуманы, проверены и испытаны, но решение так и не будет найдено — милости просим. А то что-то получается, что мы тут должны угадывать что Вы там еще делаете внутри формы, до запуска, во время работы с формой и после и какие еще условия сопутствуют всему этому(не говорю уже про то, что никто не понимает конечной цели этой все задумки).

Изменено: Дмитрий(The_Prist) Щербаков25.02.2022 14:12:57

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Jack Famous

Пользователь

Сообщений: 10846
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

От вам не лень, ей богу  :D

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#23

25.02.2022 14:13:56

Цитата
написал:
Т.е. сами по образцу это сделать не сможете, что ли?

Дмитрий, извините, но просто моргает и закрывается.

Наверное буду решать вопрос как-то по другому, если нельзя сделать так, как я спросил.
Спасибо.

Изменено: asesja25.02.2022 14:16:53

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#24

25.02.2022 14:19:01

Цитата
asesja написал:
просто моргает и закрывается

не знаю, что у Вас там происходит. Информации мало — нужно точно знать, установлено ли свойство формы ShowModal в true. Если нет — то  так и будет моргать и закрываться, т.к. в этом случае форма запускается и не происходит ожидания её закрытия и код идет дальше — следовательно книга просто закрывается.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#25

25.02.2022 14:19:55

Цитата
написал:
форма в модальном режиме открывается или ShowModal = False?

Дмитрий, ShowModal = False. Если true, то работа с другими файлами не возможна, как вы и написали.

Изменено: asesja25.02.2022 14:24:45

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#26

25.02.2022 14:21:09

Цитата
asesja написал:
ShowModal = False?

это вопрос о чем? Краткость не всегда сестра таланта. Я вроде выше все расписал.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

пора автору дать возможность помедитировать, подумать над задачей….
глядишь — и сформулирует что-то внятное
как говорится, вечно можно смотреть на 3 вещи:
— как горит огонь
— как течет вода
— и как завсегдатаи форума пытаются угадать, что нужно автору вопроса

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#28

25.02.2022 14:25:24

Цитата
написал:
это вопрос о чем?

Дмитрий, исправил.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#29

25.02.2022 14:31:18

Цитата
asesja написал:
Дмитрий, исправил

ну так это у Вас проблемы с базовым пониманием принципов работы с формами. Я уже выше пояснил — если работаете с формой в немодальном режиме — то вот эти строки:

Цитата
Дмитрий(The_Prist) Щербаков написал:
ThisWorkbook.Windows(1).Visible = False
UserForm1.Show
ThisWorkbook.Windows(1).Visible = True
ThisWorkbook.Close False ‘если надо закрывать без сохранения

выполняются сразу без остановок.
Следовательно, читаем тему выше, где я писал какое событие формы надо использовать для обработки закрытия формы

Цитата
Дмитрий(The_Prist) Щербаков написал:
событие закрытия формы. Есть там такое QueryClose

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

Изменено: Дмитрий(The_Prist) Щербаков25.02.2022 14:32:06

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#30

25.02.2022 14:47:19

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

Формулировка после получения и апробации предложенных вариантов:
При запуске имеющегося файла с формой(макросом) ***.xlsm необходимо, чтобы запускалась (была видна) только форма UserForm1, независимо первым данный файл будет запущен или уже после того, когда имеются открытые книги. Если запускается первым, то открытие других файлов Excel не должно делать видимым эту книгу (в которой форма).  Форама не модальная. На ней будут размещены различные элементы управления для своих задач.
При закрытии формы её книга тоже должна закрываться.
Дополнительно: на моем ПК имеются подключенные надстройки и отсутствует Личная книга макросов, но эти данные не должны влиять, на ход выполнения задачи, т.к. на различных ПК могут отличаться.

Изменено: asesja25.02.2022 22:33:11

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

Начинаем программировать с нуля
Часть 4. Первая форма
[Часть 1] [Часть 2] [Часть 3] [Часть 4]

Создание пользовательской формы

Создайте или откройте файл Excel с расширением .xlsm (Книга Excel с поддержкой макросов) или с расширением .xls в старых версиях приложения.

Перейдите в редактор VBA, нажав сочетание клавиш «Левая_клавиша_Alt+F11».

В открывшемся окне редактора VBA выберите вкладку «Insert» главного меню и нажмите кнопку «UserForm». То же подменю откроется при нажатии на вторую кнопку (после значка Excel) на панели инструментов.

На экране редактора VBA появится новая пользовательская форма с именем «UserForm1»:

Добавление элементов управления

Обычно вместе с пользовательской формой открывается панель инструментов «Toolbox», как на изображении выше, с набором элементов управления формы. Если панель инструментов «Toolbox» не отобразилась, ее можно вызвать, нажав кнопку «Toolbox» во вкладке «View»:

При наведении курсора на элементы управления появляются подсказки.

Найдите на панели инструментов «Toolbox» элемент управления с подсказкой «TextBox», кликните по нему и, затем, кликните в любом месте рабочего поля формы. Элемент управления «TextBox» (текстовое поле) будет добавлен на форму.

Найдите на панели инструментов «Toolbox» элемент управления с подсказкой «CommandButton», кликните по нему и, затем, кликните в любом месте рабочего поля формы. Элемент управления «CommandButton» (кнопка) будет добавлен на форму.

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

Нажатием клавиши «F4» вызывается окно свойств, с помощью которого можно вручную задавать значения свойств пользовательской формы и элементов управления. В окне свойств отображаются свойства выбранного элемента управления или формы, если выбрана она. Также окно свойств можно вызвать, нажав кнопку «Properties Window» во вкладке «View».

Отображение формы на экране

Чтобы запустить пользовательскую форму для просмотра из редактора VBA, необходимо выбрать ее, кликнув по заголовку или свободному от элементов управления полю, и совершить одно из трех действий:

  • нажать клавишу «F5»;
  • нажать на треугольник на панели инструментов (на изображении выше треугольник находится под вкладкой «Debug»);
  • нажать кнопку «Run Sub/UserForm» во вкладке «Run».

Для запуска пользовательской формы с рабочего листа Excel, можно использовать кнопки, описанные в этой статье. Например, чтобы отобразить форму с помощью «кнопки – элемента ActiveX», используйте в модуле рабочего листа следующий код:

Private Sub CommandButton1_Click()

    UserForm1.Show

End Sub

Для «кнопки – элемента управления формы» можно использовать следующий код, размещенный в стандартном программном модуле:

Sub ShowUserForm()

    UserForm1.Show

End Sub

В результате вышеперечисленных действий мы получаем на рабочем листе Excel пользовательскую форму с мигающим курсором в текстовом поле:

Добавление программного кода

Программный код для пользовательской формы и элементов управления формы записывается в модуль формы. Перейти в модуль формы можно через контекстное меню, кликнув правой кнопкой мыши на поле формы или на ссылке «UserForm1» в проводнике слева и нажав кнопку «View Code».

Переходить между открытыми окнами в редакторе VBA можно через вкладку «Window» главного меню.

Изменить название пользовательской формы и элементов управления, их размеры и другие свойства можно через окно свойств (Properties Window), которое можно отобразить клавишей «F4». Мы же это сделаем с помощью кода VBA Excel, записанного в модуль формы.

Откройте модуль формы, кликнув правой кнопкой мыши по форме и нажав кнопку «View Code» контекстного меню. Скопируйте следующий код VBA, который будет задавать значения свойств формы и элементов управления перед ее отображением на экране:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

Private Sub UserForm_Initialize()

    ‘Me — это обращение к форме в ее модуле

    With Me

        ‘Присваиваем форме заголовок

        .Caption = «Новая форма»

        ‘Задаем ширину формы

        .Width = 300

        ‘Задаем высоту формы

        .Height = 150

    End With

    With TextBox1

        ‘Задаем ширину текстового поля

        .Width = 200

        ‘Задаем высоту текстового поля

        .Height = 20

        ‘Задаем расстояние от внутреннего края

        ‘формы сверху до текстового поля

        .Top = 30

        ‘Задаем расстояние от внутреннего края

        ‘формы слева до текстового поля, чтобы

        ‘текстовое поле оказалось по центру

        .Left = Me.Width / 2 .Width / 2 6

        ‘Задаем размер шрифта

        .Font.Size = 12

        ‘Присваиваем текст по умолчанию

        .Text = «Напишите что-нибудь своё!»

    End With

    With CommandButton1

        ‘Задаем ширину кнопки

        .Width = 70

        ‘Задаем высоту кнопки

        .Height = 25

        ‘Задаем расстояние от внутреннего края

        ‘формы сверху до кнопки

        .Top = 70

        ‘Задаем расстояние от внутреннего края

        ‘формы слева до кнопки, чтобы

        ‘кнопка оказалось по центру

        .Left = Me.Width / 2 .Width / 2 6

        ‘Задаем размер шрифта

        .Font.Size = 12

        ‘Присваиваем кнопке название

        .Caption = «OK»

    End With

End Sub

Вставьте скопированный код в модуль формы:

Познакомьтесь еще с одним способом отображения на экране пользовательской формы в процессе тестирования: установите курсор внутри процедуры UserForm_Initialize() и нажмите клавишу «F5» или треугольник на панели инструментов. Все предыдущие способы (с выбором формы в редакторе и кнопками на рабочем листе) тоже работают.

В результате мы получаем следующую форму:

Теперь перейдите в редактор VBA, откройте проект формы «UserForm1» и дважды кликните по кнопке «CommandButton1». В результате откроется модуль формы и будет создан шаблон процедуры CommandButton1_Click(), которая будет запускаться при нажатии кнопки:

Private Sub CommandButton1_Click()

End Sub

Вставьте внутрь шаблона процедуры CommandButton1_Click() следующую строку кода, которая будет копировать текст из текстового поля в ячейку «A1» активного рабочего листа:

Range(«A1») = TextBox1.Text

Отобразите пользовательскую форму на экране и проверьте работоспособность кнопки «OK».


Прежде чем начать, убедитесь, что на ленте доступна вкладка Разработчик. Дополнительные сведения см. в статье Отображение вкладки «Разработчик».

Чтобы использовать пример ниже, откройте новую книгу.

Важно: Код VBA нельзя отменить, поэтому проверьте код в пустой книге или копии существующей книги. Если код не работает, вы можете закрыть книгу без сохранения изменений.

  1. Откройте вкладку Разработчик и щелкните элемент Visual Basic.

    Группа "Код" на вкладке "Разработчик"

  2. В обозревателе VBA Project слева разверните папку VBA Project книги, а затем дважды щелкните модуль ThisWorkbook. Если вы не видите обозреватель Project, перейдите в > Project проводникаили нажмите CTRL+R.

    Модуль ThisWorkbook в редакторе Visual Basic (VBE)

  3. В окне модуля, которое открывается справа, вставьте следующий код:

    Private Sub Workbook_Open()
    
    ' Put your code here
    
    End Sub

  4. В конце и подмножите записи в процедуру Sub.

    Закройте редактор Visual Basic (вам не нужно ничего сохранять).

  5. Сохраните книгу как книгу Excel Macro-Enabled (XLSM)и закроем ее.

При следующем запуске книги код, добавленный в Workbook_Open, будет работать автоматически.

Прежде чем начать, убедитесь, что на ленте доступна вкладка Разработчик. Для этого:

  1. В меню выберите пункт Параметры Excel >… >ленты & панели инструментов.

  2. В категории Настройка ленты в списке Основные вкладки выберите вариант Разработчик.

  3. Нажмите кнопку Сохранить.

Чтобы использовать пример ниже, откройте новую книгу.

Важно: Код VBA нельзя отменить, поэтому проверьте код в пустой книге или копии существующей книги. Если код не работает, вы можете закрыть книгу без сохранения изменений.

  1. Откройте вкладку Разработчик и щелкните элемент Visual Basic.

  2. В обозревателе VBA Project слева разверните папку VBA Project книги, а затем дважды щелкните модуль ThisWorkbook.

  3. В окне модуля, которое открывается справа, вставьте следующий код:

    Private Sub Workbook_Open()
    
    ' Put your code here
    
    End Sub

  4. В конце и подмножите записи в процедуру Sub.

    Закройте редактор Visual Basic (вам не нужно ничего сохранять).

  5. Сохраните книгу как книгу Excel Macro-Enabled (XLSM)и закроем ее.

При следующем запуске книги код, добавленный в Workbook_Open, будет работать автоматически.

Узнай цену своей работы

Формулировка задачи:

здравствуйте
мне нужно создать программу Auto_Open
которая при открытии книги Excel автоматически будет запускать форму.

Код к задаче: «Автоматический запуск формы при открытии книги»

textual

Листинг программы

Private Sub Workbook_Open()
 
  Form1.Show
  
End Sub

Полезно ли:

12   голосов , оценка 4.167 из 5

Похожие ответы

  1. Автоматический запуск макроса при открытии любой книги, которая соответствует конкретным условиям
  2. Excel VBA. Выбор вкладки главного меню при открытии книги
  3. Макрос Excel для автоматической сортировки при открытие документа
  4. Запуска макроса для выделения при открытии документа
  5. Файл с автоматическим запуском формы после сохранения больше не запускается и вылетает ексель
  6. Запуск макроса при открытии конкретного файла
  7. Какое свойство задать RowSourse чтобы при открытии формы список сразу был открыт
  8. Запуск макроса,при другом активном листе
  9. При открытии документа показать окно с текстом
  10. Ошибка «несовпадение типа» при вызове процедуры
  11. Запуск процедуры SQL Server через VBA

How to display a UserForm in Excel and some common things you might want to do when you display it.

Sections:

Manually Display the UserForm

Use a Button to Show the UserForm

Display the UserForm when Excel Starts

Notes

Manually Display the UserForm

Display the UserFrom by hand, without using any code.

  1. Hit AltF11 to go to the VBA window.
    c20937e1f48a6e641b006693ffbc900f.png
  2. If you don’t immediately see the UserForm, as in our example in Step 1, then look to the Project window and double-click the UserForm from there. (If you don’t see the Project window, hit CtrlR or go to View > Project Explorer.)
    a7c7d9fa2eb925740c385e38b3062b97.png
  3. Once you see the UserForm, simply click anywhere on the form and hit F5 or click the play button at the top of the screen.
    7f2b924e901330deb02678c50f56b9a9.jpg

This is not the preferred method for opening a UserForm, but it is useful to know.

(If you don’t have the Close button working yet in your form, you can hit the red X in the upper-right to close it. This is covered in more depth in the tutorial on closing UserForms.)

Use a Button to Show the UserForm

This is the most-often used method for showing a UserForm and it doesn’t require much work.

Create a macro to display the UserForm:

Sub ShowUserForm()

UserForm1.Show

End Sub

The code above is simply the name of the userform (UserForm1) followed by .Show

To find the name of the form, go to the VBA window and look at the (Name) property from the Properties window.

818785ac2878af87ce4fced718ffd3d9.png

Make sure you click on the form itself and not one of the Controls on the form, otherwise, you will see the properties for that Control instead of the form itself.

If you don’t see the Properties window, hit F4.

Once you have the macro made, we can go ahead and attach it to a button in the worksheet.

Create a button in Excel:

619cd7cce0b2b578493f98b2c58a2246.png

Right-click the button > click Assign Macro > choose the macro we just made from the list and hit OK.

When you click the button, the form will now appear. (Note, if macros are turned off the form will not appear.)

If you would like more information on attaching macros to buttons, you can read our tutorial on running a macro when you click a button in Excel.

Display the UserForm when Excel Starts

When need a small macro to do this:

Private Sub Workbook_Open()

UserForm1.Show

End Sub

This code must go into ThisWorkbook and not in a regular module. In the VBA window, double-click where it says ThisWorkbook and a code window will open.

e018d8f3500be98d7818d4919e1d8987.png

In the above code UserForm1 is the name of the UserForm that you want to open. To find the name of the form, go to the VBA window, click on the desired UserForm, and look at the (Name) property from the Properties window.

3e8cb94e5be70c9572bbba6a096f7d9a.png

Once you put the code into ThisWorkbook, you must save the file as a macro-enabled workbook and then close and re-open it. When you open the workbook again, the form will only apear once you have enabled macros to run.

Notes

As you can see, there are a number of ways to have a UserForm open in Excel, and which method you use really depends on what you are doing. I open UserForms manually when I am building them, with a button once everything is finished, and on startup only if that’s required by the project.

Make sure to download the sample file for this tutorial to see these examples in action.

Similar Content on TeachExcel

Make a UserForm in Excel

Tutorial: Let’s create a working UserForm in Excel.
This is a step-by-step tutorial that shows you e…

Modeless UserForm

Tutorial: Modeless UserForms allows you to interact with Excel while the form is open and visible. T…

Reset All Values in a UserForm

Tutorial: Clear or reset all values in a UserForm so that they contain only the default original val…

What is a UserForm in Excel?

Tutorial: A UserForm is basically a pop-up window that you can use to create a custom interface for …

Getting Data from a UserForm

Tutorial: How to get data from a UserForm in Excel, including from: text inputs (TextBox), list boxe…

Select Ranges in the Worksheet from a UserForm

Tutorial: Select a range in Excel from a UserForm and have that range input into the form so that yo…

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Excel запуск макроса при открытии листа
  • Excel запуск макроса при нажатии на ячейку
  • Excel запуск макроса при изменении ячеек
  • Excel запуск макроса при закрытии
  • Excel запуск макроса по условию в ячейке

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии