|
asesja Пользователь Сообщений: 320 |
#1 24.02.2022 23:38:32 Здравствуйте.
Запись ThisWorkbook.Windows(1).Visible = False оставляет пустое окно Excel. Exel остается видимым, а нужно действие такое же как при исполнении кода Application.Visible = False, только для данного файла. т.е. для простого пользователя при двойном клике должна открыться только форма. Если на момент запуска открыты другие файлы Excel, они не должны быть затронуты.. Если данный файл запускается первым, то тоже должна быть видна только форма, без пустого Excel. Изменено: asesja — 25.02.2022 22:21:18 |
||
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#2 25.02.2022 09:45:17
так Вы при закрытии формы возвращайте видимость окна и все будет ОК. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
|
Александр Моторин Пользователь Сообщений: 958 |
#3 25.02.2022 09:45:56 может так?
|
||
|
Ігор Гончаренко Пользователь Сообщений: 13746 |
#4 25.02.2022 10:15:41 1. исправьте:
2. Скройте книгу, Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
|
asesja Пользователь Сообщений: 320 |
#5 25.02.2022 11:52:53
Подскажите, как? При каком событии формы? Если файл будет открываться первым, то пустой Excel остается видимым, а нужна только форма. Дописал уточнение. Изменено: asesja — 25.02.2022 11:59:53 |
||
|
asesja Пользователь Сообщений: 320 |
#6 25.02.2022 11:53:57
Ничего не меняется. Изменено: asesja — 25.02.2022 12:00:57 |
||
|
asesja Пользователь Сообщений: 320 |
#7 25.02.2022 11:58:19
Спасибо. Думал что уже получилось то что хотел, но если файл запускать первым, то на фоне все равно фигурирует пустое окно Excel, а нужно чтобы была видна только форма. Дописал уточнение. Изменено: asesja — 25.02.2022 12:01:33 |
||
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#8 25.02.2022 12:02:23
так а как Вы хотели-то? Если открыта только одна книга, а Вы и ту скрываете. Да, будет пустое приложение. Определитесь для начала, что при каких условиях должно быть видимым и тогда можно будет решение найти.
а если мы эту книгу открыли не первой? Тогда что?
событие закрытия формы. Есть там такое QueryClose Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||||
|
asesja Пользователь Сообщений: 320 |
#9 25.02.2022 12:46:54
Дмитрий, дописал уточнение в первом сообщении. |
||
|
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#10 25.02.2022 12:51:29
засуньте форму в нвдстройку и подключите к Excel — теперь форма всегда будет доступна, никакие дополнительные книги не будут открываться и это очень легко и правильно Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
|
asesja Пользователь Сообщений: 320 |
#11 25.02.2022 13:11:20
В надстройку не нужно. Нужный мне макрос должен находится в фале и форма должна появляться при его запуске (как будто запускаешь exe в котором при запуске выводится форма) |
||
|
Ігор Гончаренко Пользователь Сообщений: 13746 |
#12 25.02.2022 13:17:41 код в сообщении 4 замените на такой:
Изменено: Ігор Гончаренко — 25.02.2022 13:22:34 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#13 25.02.2022 13:27:06
это никак не вяжется с этим
Но тем не менее, сделать можно так:
осталось понять, что именно делать при закрытии формы — закрывать так же файл или нет. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||||
|
asesja Пользователь Сообщений: 320 |
#14 25.02.2022 13:35:30
Не работает. Если имеются открытые файлы excel, то при запуске просто моргает окно и закрывается. Если открывать файл первым, то запускается пустой Excel без формы. |
||
|
asesja Пользователь Сообщений: 320 |
#15 25.02.2022 13:37:36
Дмитрий, да закрывать. Правильно спросили. |
||
|
RAN Пользователь Сообщений: 7091 |
#16 25.02.2022 13:47:16
|
||
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#17 25.02.2022 13:50:52
Т.е. сами по образцу это сделать не сможете, что ли?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
|
asesja Пользователь Сообщений: 320 |
#18 25.02.2022 13:51:46
Дмитрий, не работает. Форма открывается вместе с книгой. |
||
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#19 25.02.2022 13:54:07
с какой именно? Куда и на какое событие вставляли код? Чего от кода ожидаете? Изменено: Дмитрий(The_Prist) Щербаков — 25.02.2022 13:55:30 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
|
asesja Пользователь Сообщений: 320 |
#20 25.02.2022 14:01:10
Ран, почти то, что нужно, но если открыть первым файл с макросом, то затем любой следующий открытый файл Excel делает видимым Excel у которого форма. |
||
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#21 25.02.2022 14:03:34
так в условии не было ни слова о том, что надо отслеживать еще и последующие открываемые файлы! Вы сами понимаете, что одним кодом это действие не отследить? Надо писать обработку класса на отслеживание событий приложения, чтобы проверять — если форма открыта, то одно, если нет, то другое… Изменено: Дмитрий(The_Prist) Щербаков — 25.02.2022 14:12:57 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
|
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
От вам не лень, ей богу Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
|
asesja Пользователь Сообщений: 320 |
#23 25.02.2022 14:13:56
Дмитрий, извините, но просто моргает и закрывается. Наверное буду решать вопрос как-то по другому, если нельзя сделать так, как я спросил. Изменено: asesja — 25.02.2022 14:16:53 |
||
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#24 25.02.2022 14:19:01
не знаю, что у Вас там происходит. Информации мало — нужно точно знать, установлено ли свойство формы ShowModal в true. Если нет — то так и будет моргать и закрываться, т.к. в этом случае форма запускается и не происходит ожидания её закрытия и код идет дальше — следовательно книга просто закрывается. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
|
asesja Пользователь Сообщений: 320 |
#25 25.02.2022 14:19:55
Дмитрий, ShowModal = False. Если true, то работа с другими файлами не возможна, как вы и написали. Изменено: asesja — 25.02.2022 14:24:45 |
||
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#26 25.02.2022 14:21:09
это вопрос о чем? Краткость не всегда сестра таланта. Я вроде выше все расписал. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
|
пора автору дать возможность помедитировать, подумать над задачей…. Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
|
asesja Пользователь Сообщений: 320 |
#28 25.02.2022 14:25:24
Дмитрий, исправил. |
||
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#29 25.02.2022 14:31:18
ну так это у Вас проблемы с базовым пониманием принципов работы с формами. Я уже выше пояснил — если работаете с формой в немодальном режиме — то вот эти строки:
выполняются сразу без остановок.
и продумывать логику действий исходя из всех условий(открытие файлов в процессе работы с формой и поведение приложения и формы в этих случаях). Изменено: Дмитрий(The_Prist) Щербаков — 25.02.2022 14:32:06 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||||
|
asesja Пользователь Сообщений: 320 |
#30 25.02.2022 14:47:19 Спасибо, всем, кто отозвался. Все правы, что задача сформулирована не полностью. Формулировка после получения и апробации предложенных вариантов: Изменено: asesja — 25.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 нельзя отменить, поэтому проверьте код в пустой книге или копии существующей книги. Если код не работает, вы можете закрыть книгу без сохранения изменений.
-
Откройте вкладку Разработчик и щелкните элемент Visual Basic.
-
В обозревателе VBA Project слева разверните папку VBA Project книги, а затем дважды щелкните модуль ThisWorkbook. Если вы не видите обозреватель Project, перейдите в > Project проводникаили нажмите CTRL+R.
-
В окне модуля, которое открывается справа, вставьте следующий код:
Private Sub Workbook_Open() ' Put your code here End Sub
-
В конце и подмножите записи в процедуру Sub.
Закройте редактор Visual Basic (вам не нужно ничего сохранять).
-
Сохраните книгу как книгу Excel Macro-Enabled (XLSM)и закроем ее.
При следующем запуске книги код, добавленный в Workbook_Open, будет работать автоматически.
Прежде чем начать, убедитесь, что на ленте доступна вкладка Разработчик. Для этого:
-
В меню выберите пункт Параметры Excel >… >ленты & панели инструментов.
-
В категории Настройка ленты в списке Основные вкладки выберите вариант Разработчик.
-
Нажмите кнопку Сохранить.
Чтобы использовать пример ниже, откройте новую книгу.
Важно: Код VBA нельзя отменить, поэтому проверьте код в пустой книге или копии существующей книги. Если код не работает, вы можете закрыть книгу без сохранения изменений.
-
Откройте вкладку Разработчик и щелкните элемент Visual Basic.
-
В обозревателе VBA Project слева разверните папку VBA Project книги, а затем дважды щелкните модуль ThisWorkbook.
-
В окне модуля, которое открывается справа, вставьте следующий код:
Private Sub Workbook_Open() ' Put your code here End Sub
-
В конце и подмножите записи в процедуру Sub.
Закройте редактор Visual Basic (вам не нужно ничего сохранять).
-
Сохраните книгу как книгу Excel Macro-Enabled (XLSM)и закроем ее.
При следующем запуске книги код, добавленный в Workbook_Open, будет работать автоматически.
Узнай цену своей работы
Формулировка задачи:
здравствуйте
мне нужно создать программу Auto_Open
которая при открытии книги Excel автоматически будет запускать форму.
Код к задаче: «Автоматический запуск формы при открытии книги»
textual
Листинг программы
Private Sub Workbook_Open() Form1.Show End Sub
Полезно ли:
12 голосов , оценка 4.167 из 5
Похожие ответы
- Автоматический запуск макроса при открытии любой книги, которая соответствует конкретным условиям
- Excel VBA. Выбор вкладки главного меню при открытии книги
- Макрос Excel для автоматической сортировки при открытие документа
- Запуска макроса для выделения при открытии документа
- Файл с автоматическим запуском формы после сохранения больше не запускается и вылетает ексель
- Запуск макроса при открытии конкретного файла
- Какое свойство задать RowSourse чтобы при открытии формы список сразу был открыт
- Запуск макроса,при другом активном листе
- При открытии документа показать окно с текстом
- Ошибка «несовпадение типа» при вызове процедуры
- Запуск процедуры 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.
- Hit Alt + F11 to go to the VBA window.
- 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 Ctrl + R or go to View > Project Explorer.)
- 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.
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.
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:
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.
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.
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…


















