Vba excel сделать кнопку невидимой
В моей подчиненной форме (VBA в ms-access) есть кнопка под названием «Тест», и эта кнопка должна быть невидимой после нажатия.
Итак, я попробовал:
Но это не работает. Это вызывает ошибку, потому что невозможно сделать невидимой кнопку, у которой есть фокус. К сожалению, кнопка - единственная кнопка в форме (остальные элементы управления являются ярлыками). Поскольку кнопка находится в подчиненной форме, я попытался установить фокус на кнопку в родительском элементе:
Но и это не сработало. 'call me.parent.schclose.SetFocus' не вызывает ошибки, но 'Me.Test.Visible = False' делает то же самое, что и раньше.
Итак, как сделать кнопку невидимой?
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Ответы 2
Что вы можете сделать, так это развернуть свою пользовательскую форму и добавить кнопку, которая видна по умолчанию. Допустим, в настоящее время ваша пользовательская форма имеет высоту 300 и ширину 300. Разверните форму до размера 500X500 и поместите новую кнопку в правом нижнем углу этой формы (оставьте для свойства visible значение Да). Затем добавьте этот код в форму:
Теперь, когда вы нажмете на свою тестовую кнопку, она станет невидимой, а новая кнопка все равно будет скрыта, потому что она находится за пределами установленной вами высоты.
Кроме того, вам больше не нужно менять фокус на Test_click. Вам понадобится только Me.Test.Visible = False.
Кажется, это работает. Но это очень неприятный обходной путь. Наконец, я использовал другой метод (вдохновленный вашим ответом)
@ Gener4tor, что это был за метод?
увидеть ниже. Я использую «пустое поле редактирования только для чтения с прозрачной рамкой».
Вдохновленный ответом VBA_SQL_Programmer, я создал пустое поле редактирования, доступное только для чтения, с прозрачной границей (что означает, что оно в основном невидимо) в моей форме, чтобы установить фокус.
Итак, мой код выглядит так:
Это работает без изменения размера формы.
Но есть и проблема, потому что, когда фокус установлен на textBox, пользователь может видеть мигающий курсор.
Я думаю, нам придется согласиться, чтобы не прийти к единому мнению о лучшем подходе. На мой взгляд, установка высоты и ширины в любом случае является лучшей практикой, потому что, если вы этого не сделаете, форма может открываться в странных размерах на разных настройках компьютера / монитора. Из-за чего это может выглядеть непрофессионально
Эта форма является подчиненной формой, которая встроена в некоторые другие формы. Таким образом, родительская форма тоже может установить размер.
Здравствуйте!
Помогите, пожалуйста, решить следующую проблему: имеется таблица из 26 столбцов, для повседневной работы нужны не все и требуются лишь изредка и в связи с этим хочется добавить несколько кнопок "обычный вид" (будут показываться основные 10 к примеру) и "расширенный вид" (где будут отображаться все столбцы). С моими знаниями экселя этого сделать не получилось ни с помощью формул ни с помощью макросов. Вся надежда на Вас! В долгу не останусь.
Здравствуйте!
Помогите, пожалуйста, решить следующую проблему: имеется таблица из 26 столбцов, для повседневной работы нужны не все и требуются лишь изредка и в связи с этим хочется добавить несколько кнопок "обычный вид" (будут показываться основные 10 к примеру) и "расширенный вид" (где будут отображаться все столбцы). С моими знаниями экселя этого сделать не получилось ни с помощью формул ни с помощью макросов. Вся надежда на Вас! В долгу не останусь. Degas
В Excel'е есть группировка, попробуйте ее применить. Выделите столбцы с J по K - вкладка "Данные" - группа "Структура" - просто щелкните "Группировать" (там еще справа есть стрелка).
После этого над листом появится минус. Щелкайте по нему, чтобы скрыть столбцы J:K. Также над листом в начале есть кнопки 1 и 2, с помощью них тоже можно скрывать/отображать столбцы.
Недостаток такого способа - много расходуется полезного места, особенно если монитор не очень большой. Если не подходит группировка, то можно попробовать сделать макросы: один будет скрывать столбцы, другой отображать.
В Excel'е есть группировка, попробуйте ее применить. Выделите столбцы с J по K - вкладка "Данные" - группа "Структура" - просто щелкните "Группировать" (там еще справа есть стрелка).
После этого над листом появится минус. Щелкайте по нему, чтобы скрыть столбцы J:K. Также над листом в начале есть кнопки 1 и 2, с помощью них тоже можно скрывать/отображать столбцы.
Недостаток такого способа - много расходуется полезного места, особенно если монитор не очень большой. Если не подходит группировка, то можно попробовать сделать макросы: один будет скрывать столбцы, другой отображать. Karataev
Те столбцы, которые не всегда нужны, можно скрывать группировкой. Выделите столбца В:Е - Данные - Группировать. Аналогично Н:К или любые другие.
Скрывать можно плюс-минусами или 1-2 слева наверху.
Кстати, аналогично можно поступать и со строками.
Те столбцы, которые не всегда нужны, можно скрывать группировкой. Выделите столбца В:Е - Данные - Группировать. Аналогично Н:К или любые другие.
Скрывать можно плюс-минусами или 1-2 слева наверху.
Кстати, аналогично можно поступать и со строками. _Boroda_
Выделяете "ненужные" столбцы
Данные --> Группировать
Сверху появиться кнопка "-" с полосой
жмите на нее!
Выделяете "ненужные" столбцы
Данные --> Группировать
Сверху появиться кнопка "-" с полосой
жмите на нее! Nic70y
[moder]Излишнее цитирование удалено[/moder]
Менять столбцы местами нельзя, а скрывать необходимо практически через один. И тогда получится, что группировок в верху будет порядка 10 (т.е. группировка которая скрывает столбец С, затем F, J и так далее)
Если я правильно понял, то это не совсем то, что необходимо
[moder]Излишнее цитирование удалено[/moder]
Менять столбцы местами нельзя, а скрывать необходимо практически через один. И тогда получится, что группировок в верху будет порядка 10 (т.е. группировка которая скрывает столбец С, затем F, J и так далее)
Если я правильно понял, то это не совсем то, что необходимо Degas
Менять столбцы местами нельзя, а скрывать необходимо практически через один. И тогда получится, что группировок в верху будет порядка 10 (т.е. группировка которая скрывает столбец С, затем F, J и так далее)
Если я правильно понял, то это не совсем то, что необходимо Автор - Degas
Дата добавления - 21.10.2016 в 10:32
Вот два макроса. В макрос "Скрыть_столбцы" по аналогии вставьте строки кода для нужных столбцов. Сейчас макрос "Скрыть_столбцы" скрывает столбцы "A" и "B".
[vba]
Sub Скрыть_столбцы()
Application.ScreenUpdating = False
Columns("A").Hidden = True
Columns("B").Hidden = True
Application.ScreenUpdating = True
End Sub
Вот два макроса. В макрос "Скрыть_столбцы" по аналогии вставьте строки кода для нужных столбцов. Сейчас макрос "Скрыть_столбцы" скрывает столбцы "A" и "B".
[vba]
Sub Скрыть_столбцы()
Application.ScreenUpdating = False
Columns("A").Hidden = True
Columns("B").Hidden = True
Application.ScreenUpdating = True
End Sub
Sub Скрыть_столбцы()
Application.ScreenUpdating = False
Columns("A").Hidden = True
Columns("B").Hidden = True
Application.ScreenUpdating = True
End Sub
Ничего страшного. Смотрите файл-вложение. Слева видите цифры в квадратиках 1 и 2? Нажмите на 2 - откроется всё, потом нажмите на 1 - скроется.
А если нужно только один столбец открыть, то жмите плюсик над ним
Ничего страшного. Смотрите файл-вложение. Слева видите цифры в квадратиках 1 и 2? Нажмите на 2 - откроется всё, потом нажмите на 1 - скроется.
А если нужно только один столбец открыть, то жмите плюсик над ним
_Boroda_
Ничего страшного. Смотрите файл-вложение. Слева видите цифры в квадратиках 1 и 2? Нажмите на 2 - откроется всё, потом нажмите на 1 - скроется.
А если нужно только один столбец открыть, то жмите плюсик над ним
Автор - _Boroda_
Дата добавления - 21.10.2016 в 10:46
Предположим, что у нас имеется вот такая таблица, с которой приходится "танцевать" каждый день:
Кому таблица покажется маленькой - мысленно умножьте ее по площади в двадцать раз, добавив еще пару кварталов и два десятка крупных российских городов.
Задача - временно убирать с экрана ненужные в данный момент для работы строки и столбцы, т.е.,
- скрывать подробности по месяцам, оставляя только кварталы
- скрывать итоги по месяцам и по кварталам, оставляя только итог за полугодие
- скрывать ненужные в данный момент города (я работаю в Москве - зачем мне видеть Питер?) и т.д.
В реальной жизни примеров таких таблиц - море.
Способ 1. Скрытие строк и столбцов
Способ, прямо скажем, примитивный и не очень удобный, но два слова про него сказать можно. Любые выделенные предварительно строки или столбцы на листе можно скрыть, щелкнув по заголовку столбца или строки правой кнопкой мыши и выбрав в контекстном меню команду Скрыть (Hide) :
Для обратного отображения нужно выделить соседние строки/столбцы и, щелкнув правой кнопкой мыши, выбрать в меню, соответственно, Отобразить (Unhide) .
Проблема в том, что с каждым столбцом и строкой придется возиться персонально, что неудобно.
Способ 2. Группировка
Если выделить несколько строк или столбцов, а затем выбрать в меню Данные - Группа и структура - Группировать (Data - Group and Outline - Group) , то они будут охвачены прямоугольной скобкой (сгруппированы). Причем группы можно делать вложенными одна в другую (разрешается до 8 уровней вложенности):
Более удобный и быстрый способ - использовать для группировки выделенных предварительно строк или столбцов сочетание клавиш Alt+Shift+стрелка вправо, а для разгруппировки Alt+Shift+стрелка влево, соответственно.
Такой способ скрытия ненужных данных гораздо удобнее - можно нажимать либо на кнопку со знаком "+" или "-", либо на кнопки с цифровым обозначением уровня группировки в левом верхнем углу листа - тогда все группы нужного уровня будут сворачиваться или разворачиваться сразу.
Кроме того, если в вашей таблице присутствуют итоговые строки или столбцы с функцией суммирования соседних ячеек, то есть шанс (не 100%-ый правда), что Excel сам создаст все нужные группировки в таблице одним движением - через меню Данные - Группа и структура - Создать структуру (Data - Group and Outline - Create Outline) . К сожалению, подобная функция работает весьма непредсказуемо и на сложных таблицах порой делает совершенную ерунду. Но попробовать можно.
В Excel 2007 и новее все эти радости находятся на вкладке Данные (Data) в группе Структура (Outline) :
Способ 3. Скрытие помеченных строк/столбцов макросом
Этот способ, пожалуй, можно назвать самым универсальным. Добавим пустую строку и пустой столбец в начало нашего листа и отметим любым значком те строки и столбцы, которые мы хотим скрывать:
Теперь откроем редактор Visual Basic (ALT+F11), вставим в нашу книгу новый пустой модуль (меню Insert - Module) и скопируем туда текст двух простых макросов:
Как легко догадаться, макрос Hide скрывает, а макрос Show - отображает обратно помеченные строки и столбцы. При желании, макросам можно назначить горячие клавиши (Alt+F8 и кнопка Параметры), либо создать прямо на листе кнопки для их запуска с вкладки Разработчик - Вставить - Кнопка (Developer - Insert - Button) .
Способ 4. Скрытие строк/столбцов с заданным цветом
Допустим, что в приведенном выше примере мы, наоборот, хотим скрыть итоги, т.е. фиолетовые и черные строки и желтые и зеленые столбцы. Тогда наш предыдущий макрос придется немного видоизменить, добавив вместо проверки на наличие "х" проверку на совпадение цвета заливки с произвольно выбранными ячейками-образцами:
Однако надо не забывать про один нюанс: этот макрос работает только в том случае, если ячейки исходной таблицы заливались цветом вручную, а не с помощью условного форматирования (это ограничение свойства Interior.Color). Так, например, если вы с помощью условного форматирования автоматически подсветили в своей таблице все сделки, где количество меньше 10:
. и хотите их скрывать одним движением, то предыдущий макрос придется "допилить". Если у вас Excel 2010-2013, то можно выкрутиться, используя вместо свойства Interior свойство DisplayFormat.Interior, которое выдает цвет ячейки вне зависимости от способа, которым он был задан. Макрос для скрытия синих строк тогда может выглядеть так:
Ячейка G2 берется в качестве образца для сравнения цвета. К сожалению, свойство DisplayFormat появилось в Excel только начиная с 2010 версии, поэтому если у вас Excel 2007 или старше, то придется придумывать другие способы.
Есть недописанный код по появлению/скрытию кнопки в VBA.
Итак, в F6 вводится дата просрочки (дата1). В G высчитывается разница между датой просрочки и сегоняшним днём. В H показывается напоминание о запросе на продление срока годности, если разница в G составляет менее 15 дней (т.е. 14 и меньше). И в этом случае появляется кнопка, нажав на которую отправляется письмо с запросом на получение нового срока годности (дата2) (макрос на отправку письма я уже написал, как присвоть знаю, это не проблема).
Получив его, я вбиваю его ручками в I (дата2). В H при этом пропадает напоминалка о запросе, т.к. я его уже сделал, и появлется "Received". Ячейка в стоблце G ориентируется на "Received" (или на появление в I любого значения) и выдаёт ПУСТО, если таковая появляется. Дата1 (столбец I) при "Received" в H раскрашивается так, как будто значения там нет, но эта дата мне нужна будет потом для архива и пр. В стобце J считается разница между текущей датой и датой2.
Итого, что нужно сделать:
1. Оставить триггер на появлении в I любого значения, и тогда кнопка должна скрыться.
2. Если невозможно сделать 1, то сделать, чтобы скрывалась кнопка по ПУСТО в F.
3. Если это возможно, то сделать такую кнопку для каждой строки, начиная от H и заканчивая бесконечностью
Буду рад любой помощи.
Как подсчитать сумму в итоговой ячейке по определенному значению если в ячейке есть буквы и цыфры
Добрый день, всем. Помогите пожалуйста, как можно посчитать сумму в итоговой ячейке по.
Появление/скрытие
Подскажите,как сделать так чтобы по нажатию на li появлялся один background, а если я нажимаю на.
появление/скрытие блока div
Подскажите как сделать появление/скрытие блока div при нажатие на кнопку у меня получается что.
Breathe of fate, я скинул файл на почту вам, выложите итоговый сюда)
art1289,
отписался на почту. Вы сделали, что кнопка скрывается, если в I что-то есть, а мне нужно, чтобы она наоборот скрывалсь
Breathe of fate, поменяйте в коде вот это на оборот
И файл выложите будьте добры)!
Добавлено через 17 секунд
false , true
Добавлено через 3 минуты
art1289,
Работает, но не совсем так.
Надо, чтобы кнопка была скрыта, если в G значение меньше 15. И чтобы скрывалась, если в I появляется какое-либо значение.
Сейчас если в G значение больше 15 и I пусто - кнопка есть. И если в G пусто - кнопка тоже остаётся, а её быть не должно.
Файл с последними правками отправил на почту.
Breathe of fate,
опишите правильно условия я не пойму
Добавлено через 7 минут
в модуле B_Main, обратите внимание на процедуры AddSapes, DelSapes
так же Worksheet_Change можно сделать без цикла
Добавлено через 5 минут
без цикла вариант более быстрый
Если в G пусто, кнопка должна быть скрыта.
Если в G больше 15 - кнопка должна быть скрыта.
Если в G меньше 15 - кнопка должна быть показана.
Если в G меньше 15, а в I есть любое значение - кнопка должна быть скрыта.
Если в I пусто - кнопка должна быть скрыта.
Решение
Breathe of fate,
Breathe of fate, на всякий случай еще продублирую
Обрати внимание на это - в модуле B_Main, обратите внимание на процедуры AddSapes, DelSapes
они создают и удаляют кнопки, если таблица будет расширяться то тужно их запускать вначале DelSapes
потом AddSapes учти это
Скрытие и появление дива по клику
Подскажите, что не так. Когда нажимаю на ссылку, то див раскрывается. Когда нажимаю снова на.
Появление (скрытие) ScrollBar у контрола
В каком событии отловить факт появления(скрытия) полосы прокрутки?
Скрытие и появление объекта. Глобальные переменные
Это два вопроса.. 1) Как объявить глобальную переменную, которая будет использоваться всеми.
Появление/скрытие форм. Где ошибка?
Есть программа. Там 2 формы. На главной форме есть кнопка. При нажатии главная форма скрывается.
Я создал форму пользователя, чтобы показать индикатор выполнения, когда макрос все еще импортирует листы
проблема в том, что пользователь может нажать красный [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.
полезный способ отключить кнопку сделать следующее:
хотя это не избавиться кнопки, но нажатие на нее ничего не добьетесь.
проверьте следующие ссылки. У меня получилось. Он удаляет заголовок из пользовательской формы.
Читайте также: