Vba excel userform убрать кнопку закрыть

Обновлено: 07.07.2024

В этой статье говорится об удалении всех кнопок управления формой или командных кнопок с активного листа в Excel.

Удалите все кнопки, включая кнопки управления формой и командные кнопки, выбрав их все

Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!

Чтобы удалить все кнопки (включая кнопки управления формой и кнопки команд) с активного листа, сделайте следующее.

1. Включите режим дизайна, нажав разработчик > Режим проектирования. Смотрите скриншот:

2. Выберите одну из командных кнопок и нажмите Ctrl + A клавиши для выбора всех кнопок на текущем листе.

3. нажмите Удалить для удаления всех выбранных кнопок.

Внимание: Если на этом листе есть другие объекты, они также будут выбраны.

Удалите все кнопки, включая кнопки управления формой и командные кнопки, с помощью кода VBA

Кроме того, вы можете применить ниже сценарий VBA, чтобы удалить все кнопки с текущего рабочего листа в Excel.

1. Откройте рабочий лист, содержащий кнопки, которые вы хотите удалить, а затем нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль, затем скопируйте ниже код VBA в окно кода.

Код VBA: удалить все кнопки с активного листа

3. нажмите F5 ключ для запуска кода. Затем все кнопки, включая кнопки управления формой и командные кнопки, немедленно удаляются с текущего рабочего листа.

Удалите все кнопки управления формой или командные кнопки с кодом VBA

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

1. Откройте рабочий лист, содержащий кнопки, которые вы хотите удалить, а затем нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль, затем скопируйте ниже код VBA в окно кода.

Код VBA: удалить все кнопки управления формой с активного листа

Код VBA: удалить все командные кнопки с активного листа

3. нажмите F5 ключ для запуска кода.

Затем все кнопки управления формой или все командные кнопки немедленно удаляются с текущего рабочего листа.

enter image description here

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

проблема в том, что пользователь может нажать красный [X] кнопка, которая закроет и прервет обработку.

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

Я пробовал этот

и я использовал это в userform_initialize

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

ниже-это рутина, что можно назвать такой:

или из вашей формы:

вот код, который вам понадобится:

вы можете решить это из следующих фрагментов:

выберите В строке меню выберите View | Code Где курсор мигает, введите следующий код:

в строке меню выберите View | Object , чтобы вернуться к UserForm.

чтобы пользователи могли закрыть форму, нажав клавишу Esc:

выберите кнопку cmdClose В окне Свойства измените Cancel свойство True

чтобы запретить пользователям закрывать форму, нажмите кнопку X

когда UserForm открывается, есть X вверху справа. В дополнение к кнопке закрыть форму, люди смогут закрыть форму с помощью X. Если вы хотите предотвратить это, выполните следующие действия.

щелкните правой кнопкой мыши на пустой части UserForm Выберите View | Code В раскрывающемся списке процедура в правом верхнем углу выберите QueryClose

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

Я нашел вклад Джастина Дэвиса довольно полезным: если вы замените строку

пользовательская форма скрыта от пользователя, но все еще активна, пока она не выгружена.

это улучшение вышеуказанного ответа @Peter Albert

  • вызовы Windows API теперь Office x64 safe
  • FindWindow вызов был улучшен, чтобы найти только Excel UserForms. Функция в исходном ответе ищет каждый класс окна (например, окна Проводника и окна другой программы). Поэтому может случиться, что кнопка [x] других программ или окон Проводника была удалена, когда их имя было тем же именем, что и имя Пользовательская форма.

ThunderDFrame?
UserForms в Excel на самом деле относятся к классу Windows ThunderDFrame , который является классом для всех UserFroms в приложениях Microsoft Office после 2002. До этого это было ThunderXFrame .

спросите пользователя, хотят ли они закрыть форму - и потерять изменения (скажем). На основе идей от Justin & Peter.

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

Я знаю, что это старый вопрос, но для типа пользовательской формы OP цитируется, вам не нужно удалять, скрывать или отключать кнопку закрытия. Существует гораздо более простой способ;)

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

для отключить пользователя : В свойствах пользовательской формы против Enabled установлено значение False. Этот пользовательская форма будет отображаться, пока код не скажет ей скрыть. Пользователь не сможет ничего сделать с формой (не может закрыть, не может переместить и т. д.).

обратите внимание также, что если вы хотите, чтобы пользователь мог делать что-либо еще в главном окне, пока пользовательская форма все еще показывает, решает, устанавливаете ли вы ShowModal.

полезный способ отключить кнопку сделать следующее:

хотя это не избавиться кнопки, но нажатие на нее ничего не добьетесь.

проверьте следующие ссылки. У меня получилось. Он удаляет заголовок из пользовательской формы.


Ранее мы обсуждали, как создать пользовательскую форму в VBA. Теперь для получения ввода от пользователя была кнопка для отправки, в которой затем сохранялось значение, указанное пользователем в листе Excel. Но что после придания значения, форма все еще там. Или что делать, если пользователь не хочет предоставлять какие-либо данные и закрывать форму пользователя. Мы не обсуждали, как мы закроем пользовательскую форму для пользователя. Аналогично кнопке отправки для отправки данных у нас была другая кнопка, которая была для отмены, которая используется для скрытия пользовательской формы. Кнопка отмены также имеет свой собственный код, чтобы скрыть пользовательскую форму от пользователя. Теперь есть два метода, с помощью которых мы можем скрыть пользовательскую форму. Они заключаются в следующем:

  1. Первый метод - когда мы используем метод Unload Me. Этот метод выгружает пользовательскую форму и исчезает с дисплея.
  2. Другой метод, когда мы используем метод Useform.Hide. Этот метод скрывает пользовательскую форму от дисплея.

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

Как закрыть UserForm в Excel VBA?

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

Есть два способа закрыть пользовательскую форму в VBA:

Во-первых, давайте попробуем метод закрытия UserForm, используя опцию Unload Me. У нас была пользовательская форма в нашей предыдущей статье, которая выглядит как приведенная ниже.


Для кнопки отправки у нас был наш код, в котором были сохранены данные, введенные пользователем в Excel. Теперь дважды нажмите на кнопку отмены, которая откроет код для того же, как показано ниже,

Код:


Кнопка «Отмена» была второй командной кнопкой, которую мы предоставили пользовательской форме. Теперь напишите оператор кода как Unload me в разделе, как показано на рисунке ниже.

Код:


Мы можем видеть, что Me является оператором Object of Unload. Теперь давайте запустим пользовательскую форму, нажав клавишу F5, чтобы отобразить ее.


Excel VBA Закрыть UserForm - Пример № 2

Теперь давайте попробуем второй метод, метод userform.hide, аналогичный описанному выше, во-первых, давайте откроем форму пользователя из формы пользователя в окне проекта.


Теперь дважды нажмите кнопку отмены, которая откроет код просмотра для кнопки отмены.


У нас уже есть оператор Unload Me, присутствующий в кнопке отмены, очистите код и замените его на оператор Userform.Hide .

Код:


Теперь давайте снова запустим пользовательскую форму, нажав клавишу F5, и отобразим ее на экране.


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

Excel VBA Закрыть UserForm - Пример № 3

Теперь давайте перейдем к первому методу Unload Me оператора для кнопки отмены и предоставим некоторые данные для пользовательской формы. Дважды щелкните на кнопке отмены в пользовательской форме, чтобы открыть код представления для командной кнопки и заменить код оператором Unload Me, как показано ниже.

Код:


Теперь снова запустите пользовательскую форму, нажав клавишу F5, и отобразите ее на экране.


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


Снова запустите пользовательскую форму, нажав клавишу F5.


Теперь мы можем видеть, что мы потеряли данные, которые мы предоставили пользовательской форме, так как мы не предоставили ее, она не была сохранена на рабочем листе, и мы закрыли пользовательскую форму с помощью оператора Unload Me, который удалил уже заполненные данные.

Excel VBA Закрыть UserForm - Пример № 4

Теперь давайте сделаем то же самое упражнение, но с помощью оператора Userform.Hide,

В командной кнопке отмены замените код, используя метод userform.hide, как показано ниже.

Код:


Теперь мы снова запустим пользовательскую форму, нажав клавишу F5, и предоставим ей некоторые данные следующим образом.


Теперь давайте нажмем кнопку отмены и снова запустим пользовательскую форму, которая даст нам следующий результат.



Теперь данные сохранены, пользовательская форма теперь пуста, и мы можем закрыть пользовательскую форму, используя кнопку отмены,

Для запуска процедур и макросов обычно используется событие кнопки – Click.

Свойства элемента CommandButton

Свойство Описание
AutoSize Автоподбор размера кнопки. True – размер автоматически подстраивается под длину введенной надписи (заголовка). False – размер элемента управления определяется свойствами Width и Height.
BackColor Цвет элемента управления CommandButton.
Caption Надпись (заголовок) – текст, отображаемый на кнопке.
ControlTipText Текст всплывающей подсказки при наведении курсора на кнопку.
Enabled Возможность взаимодействия пользователя с элементом управления CommandButton. True – взаимодействие включено, False – отключено (цвет надписи становится серым).
Font Шрифт, начертание и размер текста надписи.
Height Высота элемента управления.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления.
Picture Добавление изображения вместо текста заголовка или дополнительно к нему.
PicturePosition Выравнивание изображения и текста на кнопке.
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления.
Visible Видимость элемента управления CommandButton. True – элемент отображается на пользовательской форме, False – скрыт.
Width Ширина элемента управления.
WordWrap Перенос текста заголовка на новую строку при достижении ее границы. True – перенос включен, False – перенос выключен.

В таблице перечислены только основные, часто используемые свойства кнопки. Все доступные свойства отображены в окне Properties элемента управления CommandButton.

Пример кнопки с надписью и изображением

Примеры кода VBA Excel с кнопкой

Изначально для реализации примеров на пользовательскую форму UserForm1 добавлена кнопка CommandButton1.

Пример 1

Изменение цвета и надписи кнопки при наведении на нее курсора.

Условие примера 1

  • Действия при загрузке формы: замена заголовка формы по умолчанию на «Пример 1», замена надписи кнопки по умолчанию на «Кнопка», запись цвета кнопки по умолчанию в переменную уровня модуля.
  • Сделать, чтобы при наведении курсора на кнопку, она изменяла цвет на зеленый, а надпись «Кнопка» менялась на надпись «Нажми!»
  • Добавление кода VBA Excel, который будет при удалении курсора с кнопки возвращать ей первоначальные настройки: цвет по умолчанию и надпись «Кнопка».

Решение примера 1

1. Объявляем в разделе Declarations модуля пользовательской формы (в самом начале модуля, до процедур) переменную myColor:

Читайте также: