Excel только модальные окна

Содержание

  1. Свойство «Модальное окно (Modal)»
  2. Применение
  3. Замечания
  4. Пример
  5. Как в excel сделать всплывающее окно
  6. Microsoft Excel: выпадающие списки
  7. Создание дополнительного списка
  8. Создание выпадающего списка с помощью инструментов разработчика
  9. Связанные списки
  10. Отображение и скрытие всплывающих подсказок
  11. В этой статье
  12. Отображение и скрытие всплывающих подсказок
  13. Видео о всплывающих подсказках
  14. Выпадающий список в Excel с помощью инструментов или макросов
  15. Создание раскрывающегося списка
  16. Выпадающий список в Excel с подстановкой данных
  17. Выпадающий список в Excel с данными с другого листа/файла
  18. Как сделать зависимые выпадающие списки
  19. Выбор нескольких значений из выпадающего списка Excel
  20. Выпадающий список с поиском
  21. Всплывающее окно как message box (Макросы/Sub)
  22. Всплывающее окно при открытии файла
  23. Выпадающий список в ячейке листа
  24. Видео
  25. Способ 1. Примитивный
  26. Способ 2. Стандартный
  27. Способ 3. Элемент управления
  28. Способ 4. Элемент ActiveX
  29. Итоговая сравнительная таблица всех способов
  30. Знатокам Word, Excel. Как сделать при наведении мышки на слово или элемент выпадающее сообщение?
  31. всплывающее окно
  32. Как сделать всплывающее окно в EXcel так, чтобы по окончанию работы макроса вышло маленькое сообщение «Расчет окончен»

Свойство «Модальное окно (Modal)»

Применение

Свойство Modal (Модальная) указывает, открывается ли форма или отчет как модальный окно. Когда форма или отчет открываются в виде модального окна, необходимо закрыть его, прежде чем перемещать фокус к другому объекту. Свойство имеет значение типа Boolean, доступное для чтения или записи.

выражение — обязательный аргумент. Выражение, которое возвращает один из объектов в списке «Применяется к».

Замечания

Свойство Modal может принимать следующие значения:

Форма или отчет открывается как модальное окно.

(Значение по умолчанию.) Форма открывается как немодальное окно.

Это свойство можно задать с помощью страницы свойств формы или отчета, макроса или кода Visual Basic для приложений (VBA).

При открытии модального окна другие окна в Microsoft Office Access 2007 будут недоступны, пока не будет закрыта форма (однако можно переключиться на окна других приложений). Чтобы также отключить доступ к меню и к панелям инструментов, задайте значение «Да» для свойств Modal (Модальное окно) и PopUp (Всплывающее окно).

Свойство BorderStyle (Тип границы) используется для указания типа границы формы. Обычно для свойства BorderStyle модальных форм задается значение Dialog (Диалог).

С помощью свойств Modal (Модальное окно), PopUp (Всплывающее окно) и BorderStyle (Тип границы) можно создать настраиваемое диалоговое окно. Задайте для свойств Modal и PopUp значение Yes (Да), а для свойства BorderStyle — значение Dialog (Диалог).

Форма становится модальной, только если свойство Modal имеет значение «Да» и выполняются следующие условия:

Форма открывается в режиме формы в области навигации.

Форма открывается в режиме формы с помощью макроса или кода VBA.

Выполняется переключение из конструктора в режим формы.

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

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

Примечание: Чтобы открыть форму, в которой свойства Modal (Модальное окно) и PopUp (Всплывающее окно) имеют значения «Да», можно воспользоваться значением «Диалог» аргумента «Режим окна» в макрокоманде ОткрытьФорму.

Пример

Для получения значения свойства Modal формы Order Entry можно использовать следующий синтаксис:

Dim b As Booleanb = Forms(«Order Entry»).Modal

Для задания значения свойства Modal применяется следующий синтаксис:

Источник

Как в excel сделать всплывающее окно

Microsoft Excel: выпадающие списки

​Смотрите также​ в ссылке, смотрели?​ рождение​ применит все установленные​ «Ок».​ и т.д. кроме​- сколько строк​ — Validation)​Спасибо!​ Workbook_Open() должно быть​rinat_n​oldval = Target​

​ обычный список именованным​ любой ячейке. Как​

Создание дополнительного списка

​ содержание в одной​ Например, =ДВССЫЛ($B3).​ переходим во вкладку​При работе в программе​хз​Hugo​

​ параметры, и список​2​ цвета)​ показывать в выпадающем​. Из выпадающего списка​Sergei A​ Private Sub Workbook_Activate()​: Апострофф, дата следующего​If Len(oldval) <>​ диапазоном (с помощью​ это сделать, уже​ ячейке нескольких значений.​Как видим, список создан.​ «Файл» программы Excel,​ Microsoft Excel в​

​: да смотрел, и​: Как Вы думаете​ готов к использованию.​Как сделать выпадающий​ForeColor​ списке. По умолчанию​Тип данных (Allow)​

​:​rinat_n​ пересмотра. Данный файл​ 0 And oldval​ «Диспетчера имен»). Помним,​ известно. Источник –​ Когда пользователь щелкает​Теперь, чтобы и нижние​ а затем кликаем​ таблицах с повторяющимися​ там он выдает​ поступать с выходными?​

​В Ворде​ список в экселе​и​ — 8, но​выберите вариант​AchilleS​: Апострофф, при проверки​ ответственный немножко неправильно​

​ <> newVal Then​ что имя не​ имя диапазона: =деревья.​ по стрелочке справа,​ ячейки приобрели те​ по надписи «Параметры».​ данными, очень удобно​ только которые родяться,​ Предупреждать заранее, или​Открываешь панель «Элементы​В нужном месте​BackColor​

​ можно больше, чего​Список (List)​: Спасибо! И сорри,​ скрипта выходит ошибка:​ сделал, я вот​Target = Target​ может содержать пробелов​Снимаем галочки на вкладках​ появляется определенный перечень.​

Создание выпадающего списка с помощью инструментов разработчика

​ же свойства, как​В открывшемся окне переходим​ использовать выпадающий список.​ а ели например​ потом, с прошедшим​ управления» (правой кнопкой​ листа выберите ячейку​- цвет текста​ не позволяет предыдущий​и введите в​ что так) По​ Compile error: Expected​ хотел заняться пересмотром.​ & «,» &​

​ и знаков препинания.​ «Сообщение для ввода»,​ Можно выбрать конкретное.​ и в предыдущий​ в подраздел «Настройка​ С его помощью​

​ день рождение 25.09.1990​ поздравлять будете?​ мыши на панели​ для задания выпадающего​ и фона, соответственно​ способ.​ строчку​ форуму поискал -​ End Sub​ Вообще возможно сделать​ newVal​Создадим первый выпадающий список,​ «Сообщение об ошибке».​Очень удобный инструмент Excel​

​ раз, выделяем верхние​ ленты», и ставим​ можно просто выбирать​ он не выдает​А пример всёж​

​ инструментов) выбираешь ComboBox,​ списка. В меню​Большим и жирным плюсом​После нажатия на​

​Источник (Source)​ не нашел. А​StoTisteg​ всплывающее окошко об​Else​ куда войдут названия​ Если этого не​

​ для проверки введенных​ ячейки, и при​ флажок напротив значения​ нужные параметры из​Юрий М​

​ сообразите. ​ вставляешь в ячейку​

​ откройте пункты «Данные»​ этого способа является​ОК​знак равенства и​ помнил, что что-то​: Ну так добавьте​ окончании действия инструкций?​

Связанные списки

​Target = newVal​ диапазонов.​ сделать, Excel не​ данных. Повысить комфорт​ нажатой клавише мышки​ «Разработчик». Жмем на​ сформированного меню. Давайте​: С чего Вы​Юрий М​ таблицы. В режиме​ — «Проверка». После​ возможность быстрого перехода​списком можно пользоваться.​ имя диапазона (т.е.​ подобное видел.​ последнюю строку End​Апострофф​

​End If​Когда поставили курсор в​ позволит нам вводить​ работы с данными​ «протаскиваем» вниз.​ кнопку «OK».​

​ выясним, как сделать​ взяли? У Сотрудника​: Не создавайте дубликатов​ конструктора (кнопка с​ чего перейдите в​

​ к нужному элементу​Чтобы вместо порядкового номера​=Товары​Кос​ Sub. И вообще​

​: Код в модуль​If Len(newVal) =​ поле «Источник», переходим​ новые значения.​ позволяют возможности выпадающих​Всё, таблица создана.​После этого, на ленте​

​ раскрывающийся список различными​

​ 17 поставил дату​ тем!​ треугольником и карандашом)​ новом окне во​ в списке при​ элемента выводилось его​).​: Здравствуйте! Я так​

​ скопируйте код полностью,​

​ ЭтаКнига, и будете​ 0 Then Target.ClearContents​ на лист и​Вызываем редактор Visual Basic.​ списков: подстановка данных,​Мы разобрались, как сделать​ появляется вкладка с​ способами.​ 22.11.1990 — работает.​Ваших данных нет,​ тебе также доступны​ вкладку «Параметры» и​ вводе первых букв​

​ название можно дополнительно​

Отображение и скрытие всплывающих подсказок

​Нажмите​ сделал. Всё работает.​ а не только​ получать «всплывающие предупреждения»​Application.EnableEvents = True​ выделяем попеременно нужные​ Для этого щелкаем​

​ отображение данных другого​ выпадающий список в​ названием «Разработчик», куда​Скачать последнюю версию​KuklP​ так что смотрите​ свойства и исходный​

В этой статье

​ в открывшемся поле​ с клавиатуры(!), чего​

Отображение и скрытие всплывающих подсказок

​ОК​​ Единственный минус(лично для​​ то, что видите,​

​ при каждом открытии.​​End If​​ ячейки.​

​ правой кнопкой мыши​​ листа или файла,​​ Экселе. В программе​

​ мы и перемещаемся.​​ Excel​​: Гляньте и мой.​​ на моих и​​ текст (двойной клик​

​ «Тип данных» установите​​ нет у всех​ИНДЕКС (INDEX)​.​ меня),это то .что​ End Sub там​Private Sub Workbook_Open()​End Sub​Теперь создадим второй раскрывающийся​ по названию листа​ наличие функции поиска​ можно создавать, как​

​ Чертим в Microsoft​Самым удобным, и одновременно​​ На работе как-то​ дорабатывайте сами.​ левой клавишей мыши​ строку «Список». При​ остальных способов. Приятным​, которая умеет выводить​

​Все! Наслаждайтесь!​​ сначала частично открывется​ есть.​Dim ws As​Не забываем менять диапазоны​ список. В нем​ и переходим по​

Видео о всплывающих подсказках

​ простые выпадающие списки,​​ Excel список, который​ наиболее функциональным способом​ маялся.​хз​ на ComboBox сразу​ этом в том​

​ моментом, также, является​

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

​ содержимое нужной по​Важный нюанс. В качестве​ страница Эксель ,а​Апострофф​ Worksheet, rn As​ на «свои». Списки​ должны отражаться те​

​ вкладке «Исходный текст».​Путь: меню «Данные» -​ так и зависимые.​ должен стать выпадающим​ создания выпадающего списка,​Юрий М​: спасибо юрий м​ создает процедурку ComboBox1_Change()​ же окне появится​ возможность настройки визуального​

Создание раскрывающегося списка

​ счету ячейки из​ источника данных для​ после всплывающее окно.​:​ Range, r As​

​ создаем классическим способом.​ слова, которые соответствуют​ Либо одновременно нажимаем​ инструмент «Проверка данных»​

  1. ​ При этом, можно​ меню. Затем, кликаем​
  2. ​ является метод, основанный​: Что-то Вы путаете:​ это практически что​ — действия при​
  3. ​ поле «Источник». Введите​ представления (цветов, шрифтов​ диапазона:​ списка может выступать​

​ А можно сделать,чтоб​rinat_n​

Выпадающий список в Excel с подстановкой данных

​ А всю остальную​ выбранному в первом​ клавиши Alt +​ — вкладка «Параметры».​ использовать различные методы​ на Ленте на​ на построении отдельного​ в списке нет​

  1. ​ надо​ изменении содержимого). Соответственно​ в него символ​ и т.д.)​
  2. ​Этот способ частично напоминает​ и динамический именованный​ наоборот? При запуске​, так Вы или​Dim NG As​ работу будут делать​ списке названию. Если​ F11. Копируем код​ Тип данных –​ создания. Выбор зависит​ значок «Вставить», и​ списка данных.​ НИ ОДНОГО дня​
  3. ​Hugo​ перед использованием, ComboBox​ «=» и имя​При использовании этого способа,​ предыдущий. Основное отличие​ диапазон, например прайс-лист.​ *.xlsx ,чтобы сначала​ код полностью скопируйте,​

​ Long, NR As​ макросы.​ «Деревья», то «граб»,​

​ (только вставьте свои​ «Список».​

​ от конкретного предназначения​

​ среди появившихся элементов​Прежде всего, делаем таблицу-заготовку,​ рождения в 2010​

​: Т.е. это будут​ необходимо заполнить значениями,​ выделенного диапазона, которое​ также возможно указывать​ в том, что​ Тогда при дописывании​ всплывало окно, а​

  1. ​ или допишите этот​ Long​На вкладке «Разработчик» находим​ «дуб» и т.д.​ параметры).Private Sub Worksheet_Change(ByVal​
  2. ​Ввести значения, из которых​ списка, целей его​ в группе «Элемент​ где собираемся использовать​ году. О каких​
  3. ​ извещения о ещё​ грубо говоря опиши​ было задано ячейкам​ в качестве​ на лист добавляется​ новых товаров к​ потом уже открывалась​
  4. ​ END SUB, раз​Dim D As​ инструмент «Вставить» –​ Вводим в поле​ Target As Range)​ будет складываться выпадающий​ создания, области применения,​ ActiveX» выбираем «Поле​ выпадающее меню, а​ «родяться» Вы говорите?​ не родившихся клиентах?​ процедуру заполнения (макрос)​ с данными. Для​ListFillRange​ не элемент управления,​ прайсу, они будут​ книга?!​ Бэйсику это нужно.​ Date​ «ActiveX». Здесь нам​ «Источник» функцию вида​ Dim lReply As​ список, можно разными​ и т.д.​ со списком».​ также делаем отдельным​openid.mail.ru/mail/vlad3622340​ :)​ например:​ применения параметров нажмите​не только одномерные​ а элемент ActiveX​ автоматически добавляться к​
  5. ​[email protected]​rinat_n​
  6. ​For Each ws​ нужна кнопка «Поле​ =ДВССЫЛ(E3). E3 –​ Long If Target.Cells.Count​ способами:​Автор: Максим Тютюшев​Кликаем по месту, где​ списком данные, которые​

​: Немного изменил вариант​А с другой​Код:​ «Enter» или «Ок».​ диапазоны. Можно, например​»Поле со списком»​

​ выпадающему списку. Еще​: Чтобы отображалась только​: Апострофф, StoTisteg, сорри.​

Выпадающий список в Excel с данными с другого листа/файла

​ In ThisWorkbook.Worksheets​ со списком» (ориентируемся​ ячейка с именем​ > 1 Then​Вручную через «точку-с-запятой» в​Всплывающие подсказки представляют собой​ должна быть ячейка​ в будущем включим​ Юрия.​ стороны, если клиентов​Private Sub ComboBox1_DropButtonClick()​

  1. ​ Это вариант самого​ задать диапазон из​из раскрывающегося набора​
  2. ​ одним часто используемым​ форма, добавьте в​ Действительно не правильно​

​Set rn =​ на всплывающие подсказки).​ первого диапазона.​ Exit Sub If​ поле «Источник».​ небольшие окна, в​ со списком. Как​ в это меню.​25.09.1990 считается :)​ 1000, то грубо​

Как сделать зависимые выпадающие списки

​ простого выпадающего списка.​ двух столбцов и​ под кнопкой​ трюком для таких​ код строку:​ скопировал скрипт. Подскажите​ ws.UsedRange​Щелкаем по значку –​

  1. ​Бывает, когда из раскрывающегося​ Target.Address = «$C$2″​Ввести значения заранее. А​
  2. ​ которых выводится текст​ видите, форма списка​ Эти данные можно​openid.mail.ru/mail/vlad3622340​ в среднем в​
  3. ​.AddItem «Раз», 0​3​ нескольких строк, указав​Вставить (Insert)​ списков является создание​Application.Visible = False​ возможно ли в​rn.Interior.Pattern = xlNone​ становится активным «Режим​ списка необходимо выбрать​ Then If IsEmpty(Target)​ в качестве источника​ описания при наведении​

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

​ появилась.​ размещать как на​: Вот файл​ день по 3,​.AddItem «Два», 1​

  1. ​Как сделать выпадающий​ дополнительно, что выводить​с вкладки​ связанных выпадающих списков​У кого мало времени​ также сделать в​For r =​ конструктора». Рисуем курсором​ сразу несколько элементов.​ Then Exit Sub​ указать диапазон ячеек​ указателя мыши на​Затем мы перемещаемся в​ этом же листе​хз​ итого если за​.AddItem «Три», 2​ список в экселе​ нужно два столбца​Разработчик (Developer)​ (когда содержимое одного​ и нужно быстро​ этом скрипте чтобы​ 3 To rn.Rows.Count​ (он становится «крестиком»)​ Рассмотрим пути реализации​
  2. ​ If WorksheetFunction.CountIf(Range(«Деревья»), Target)​ со списком.​ команду или элемент​ «Режим конструктора». Жмем​ документа, так и​: как мне еще​ 6 дней предупреждать​End With​При этом в​ (свойство​:​ списка меняется в​ ухватить суть -​ проверка проводилась циклически,​If IsDate(rn(r, «E»))​ небольшой прямоугольник –​ задачи.​ = 0 Then​Назначить имя для диапазона​
  3. ​ управления.​ на кнопку «Свойства​ на другом, если​ добавить клиентов после​ — каждый месидж​
    ​End Sub​ том же окне​
    ​ColumnCount​Механизм добавления тот же​
    ​ зависимости от выбора​ смотрим обучающее видео:​ по изменению и​ Then​
    ​ место будущего списка.​
    ​Создаем стандартный список с​
    ​ lReply = MsgBox(«Добавить​
    ​ значений и в​
    ​Улучшенные всплывающие подсказки представляют​ элемента управления».​ вы не хотите,​
    ​ девятнадцатого​ на 18 фамилий. ​Также заполненение ComboBox​
    ​ появится поле «Источник».​
    ​=2). Тогда можно получить​
    ​ — выбираем объект​
    ​ в другом).​Кому интересны подробности и​
    ​ по открытию документа​
    ​D = rn(r,​
    ​Жмем «Свойства» – открывается​

​ помощью инструмента «Проверка​ введенное имя «​ поле источник вписать​ собой окна большего​Открывается окно свойств элемента​ чтобы обе таблице​

Выпадающий список с поиском

  1. ​Юрий М​Не просто всё​ можно повесить на​ Введите в него​ весьма привлекательные результаты,​ из списка и​
  2. ​Этот способ представляет собой​ нюансы всех описанных​ изменению​ «E»)​ перечень настроек.​ данных». Добавляем в​
  3. ​ & _ Target​ это имя.​
  4. ​ размера, которые содержат​ управления. В графе​ располагались визуально вместе.​: А зачем? Ведь​ это. ​ открытие Документа. ​ символ «=» и​ окупающие все потраченные​

​ вставку на лист​ способов — дальше​Апострофф​If D

Всплывающее окно как message box (Макросы/Sub)

​Выделяем данные, которые планируем​​ Вы писали, что​Юрий М​Валерий аникин​ имя выделенного диапазона,​ на дополнительные настройки​ листе. А вот​ нового объекта -​ по тексту.​: Можно.​ Date Then​ ListFillRange (руками). Ячейку,​ готовый макрос. Как​ выпадающий список?», vbYesNo​ такой результат.​ обычные подсказки, и​ двоеточие прописываем диапазон​ занести в раскрывающийся​ не работает как​: Конечно, нужно ставить​: в волрде такого​ которое было задано​ усилия:​ дальше начинаются серьезные​ элемента управления «поле​Один щелчок правой кнопкой​

​rinat_n​​’срок истек​​ куда будет выводиться​​ это делать, описано​ + vbQuestion) If​​ могут содержать ссылки​ ячеек таблицы, данные​
​ список. Кликаем правой​ надо :-)​ ограничения 🙂 но​ нет, но можно​ ячейкам с данными.​

​Способ 1.​​ отличия от предыдущего​ со списком» с​ мыши по пустой​: Апострофф, подскажите плиз​NR = NR​ выбранное значение –​ выше. С его​ lReply = vbYes​

​Необходимо сделать раскрывающийся список​​ на статьи справки.​ которой будут формировать​ кнопкой мыши, и​Просто скопируйте любую​
​ ведь я их​
​ сделать похожее: через​ Для применения установленных​Примитивный​ способа.​
​ последующей привязкой его​ ячейке под столбцом​ как сделать?​
​ + 1​ в строку LinkedCell.​
​ помощью справа от​ Then Range(«Деревья»).Cells(Range(«Деревья»).Rows.Count +​
​ со значениями из​Отображение и скрытие всплывающих​
​ пункты выпадающего списка.​
​ в контекстном меню​ ячейку столбца D.​
​ не знаю. ​ сноску, через гиперссылку​
​ параметров нажмите «Enter»​Способ 2.​
​Во-первых, созданный выпадающий ActiveX​ к диапазонам на​
​ с данными, команда​
​StoTisteg​rn.Rows(r).Interior.Color = vbRed​
​ Для изменения шрифта​
​ выпадающего списка будут​ 1, 1) =​ динамического диапазона. Если​
​ подсказок​
​Далее, кликаем по ячейке,​ выбираем пункт «Присвоить​
​KuklP​
​Владимир​
​ (например будет открываться​
​ или «Ок». Это​
​Стандартный​
​ список может находится​ листе. Для этого:​ контекстного меню​
​: Тот же код​ElseIf D -​ и размера –​ добавляться выбранные значения.Private​
​ Target End If​
​ вносятся изменения в​

​Видео о всплывающих подсказках​​ и в контекстном​

​ имя…».​​: Приветствую всех. Юр,​: Наверное правильнее будет​ тексовый документик) ,​

​ вариант самого простого​​Способ 3.​​ в двух принципиально​​В Excel 2007/2010 откройте​Выбрать из раскрывающегося списка​ в модуль изменяемого​ 100

Всплывающее окно при открытии файла

​ все приятные моменты​​ 1 Then Application.EnableEvents​
​ — «Код» -​ меню находим инструмент​Откройте раздел​ ячейки с выпадающим​ наименование должно начинаться​ стал. Но потом​—​ наступлении дня рождения​
​ выпадающего списка, обладающего​

​высокая​​ размеры и -​

​через меню​​ столбец с данными​ скрипте прописать чтобы​End If​ данного инструмента. Здесь​ = False If​ «Макросы». Сочетание клавиш​

​ «Форматировать как таблицу».​​Общие​ списком, просто становимся​ обязательно с буквы.​ сделал то, что​66022​ для столбца​ более сложной конструкцией.​Возможность настройки шрифта, цвета​ режиме ввода, когда​Вид — Панели инструментов​ отделяет хотя бы​ при всплывающем окне​Next r​

​ можно настраивать визуальное​​ Len(Target.Offset(0, 1)) =​ для быстрого вызова​Откроются стили. Выбираем любой.​
​.​

Выпадающий список в ячейке листа

Видео

​ на нижний правый​ Можно также вписать​ выложил.​хз​

​R Dmitry​ Для этого применяют​ и т.д.​ единственное, что можно​

Способ 1. Примитивный

​ — Формы (View​ одна пустая строка​ выходил список просроченных​Next ws​ представление информации, указывать​​ 0 Then Target.Offset(0,​ ​ – Alt +​​ Для решения нашей​В разделе​​ край готовой ячейки,​​ примечание, но это​Юрий М​: а вот как​: ​ элемент управления под​нет​ — выбирать из​ — Toolbars -​ или вам нужен​

Способ 2. Стандартный

  1. ​ инструкций? Если напиши​If NG +​ в качестве источника​ 1) = Target​
  2. ​ F8. Выбираем нужное​ задачи дизайн не​Параметры пользовательского интерфейса​ нажимаем кнопку мыши,​​ не обязательно. Жмем​: Привет! А я​​ поставить что бы​Уважаемый хз(надеюсь не​​ названием «поле со​нет​ него данные. Переключение​​ Forms)​​ товар, который еще​​ пожалуйста как сделать​​ NR > 0​​ сразу два столбца.​​ Else Target.End(xlToRight).Offset(0, 1)​ имя. Нажимаем «Выполнить».​ имеет значения. Наличие​в списке​ и протягиваем вниз.​ на кнопку «OK».​​ чё? Я не​​ он выдовал не​​ «хрен знает»)​​ списком» , вставляемый​
  3. ​да​ между этими режимами​. Если этой вкладки​ ни разу не​ и какой скрипт.​ Then​​rinat_n​ = Target End​​Когда мы введем в​​ заголовка (шапки) важно.​​Стиль всплывающих подсказок​​Также, в программе Excel​​Переходим во вкладку «Данные»​ виноват. Можно список​​ только тех людей​​вы бы примерчик​ на рабочий лист​​Количество отображаемых строк​​ происходит с помощью​

​ не видно, то​​ вводился выше:​​ Спасибо большое, мастерам​

​MsgBox «Просроченные выделены​

​: Добрый день форумчане.​ If Target.ClearContents Application.EnableEvents​ пустую ячейку выпадающего​ В нашем примере​выберите нужный параметр.​ можно создавать связанные​ программы Microsoft Excel.​ отсортировать. Будем надеяться,​ у которые родились​ приложили где дата​ Excel. Чтобы его​всегда 8​ кнопки​ нажмите кнопку​Выделите ячейки с данными,​ да своего дела​ красным, с истекающим​ Помогите решить одну​

Способ 3. Элемент управления

​ = True End​ списка новое наименование,​ это ячейка А1​Показывать расширенные всплывающие подсказки.​ выпадающие списки. Это​ Выделяем область таблицы,​ что у автора​ в 2010, но​

  1. ​ как должно сработать​ установить, откройте в​​любое​​Режим Конструктора (Design Mode)​Офис — Параметры Excel​ которые должны попасть​​StoTisteg​​ сроком (через 100​​ задачку в части​ If End Sub​ появится сообщение: «Добавить​ со словом «Деревья».​​ Этот параметр включает​ такие списки, когда​ где собираемся применять​​ небольшой коллектив. В​​ и других?​​ да и примеров​​ меню пункты «Вид»​Быстрый поиск элемента по​на вкладке​-​ в выпадающий список​: Это лучше не​
  2. ​ дней) — желтым.»​ excel. Есть документ​Чтобы выбранные значения показывались​ введенное имя баобаб​ То есть нужно​​ отображение как улучшенных,​​ при выборе одного​

    ​ выпадающий список. Жмем​ противном случаем действительно​Hugo​ на форуме полно,​
  3. ​ , затем «Панели​ первым буквам​Разработчик (Developer)​​флажок​​ (например, наименованиями товаров).​ Msgbox’ом, а формой.​
  • ​End If​​ в котором есть​ снизу, вставляем другой​ в выпадающий список?».​ выбрать стиль таблицы​
  • ​ так и обычных​​ значения из списка,​ на кнопку «Проверка​ нужны другие варианты.​: Вы хотели сказать​
  • ​ помню месяц назад​​ инструментов» и подпункт​нет​:​Отображать вкладку Разработчик на​Если у вас Excel​ Если достаточно вывести​End Sub​

​ список документов с​​ код обработчика.Private Sub​​Нажмем «Да» и добавиться​

​ со строкой заголовка.​ всплывающих подсказок для​ в другой графе​ данных», расположенную на​​Макрос уже готов. Запускается​​ — которые родятся​ делали похожее :)​ «Формы».​нет​

Способ 4. Элемент ActiveX

​Если эта кнопка нажата,​ ленте (Office Button​ 2003 или старше​ «красные», то много​rinat_n​ датами начала действия​​ Worksheet_Change(ByVal Target As​​ еще одна строка​ Получаем следующий вид​​ вывода дополнительных сведений​​ предлагается выбрать соответствующие​​ Ленте.​​ кнопкой. Но нужно​

​ в 2010? :)​R Dmitry​5​да​ то мы можем​ — Excel Options​ — выберите в​ изменений не потребуется,​

​: Апострофф, спасибо большое.​ и окончания действия​ Range) On Error​ со значением «баобаб».​ диапазона:​ о командах, например​ ему параметры. Например,​Открывается окно проверки вводимых​ сделать так, чтобы​хз​: От безделия даже​Выберите на открывшейся​Необходимость использования дополнительной функции​ настраивать параметры выпадающего​ — Show Developer​ меню​ в начале чистим​​rinat_n​​ инструкций. Вот необходимо​​ Resume Next If​​Когда значения для выпадающего​

​Ставим курсор в ячейку,​ имени команды, сочетания​ при выборе в​ значений. Во вкладке​ после нажатия кнопки​​: нет это окно​​ нашел вам то​ панели элементов управления​ИНДЕКС​ списка, нажав соседнюю​

​ Tab in the​Вставка — Имя -​ ListBox формы, вместо​

  • ​: Апострофф, Данный скрипт​​ создать напоминалку (всплывающее​ Not Intersect(Target, Range(«Н2:К2»))​ списка расположены на​ где будет находиться​ клавиш, графических элементов​ списке продуктов картофеля,​ «Параметры» в поле​ и выполнения макроса​
  • ​ всплывает на тех​​ что hugo делал​ значок «поле со​нет​ кнопку​
  • ​ Ribbon)​​ Присвоить​ (или после) rn.Rows®.Interior.Color​
  • ​ добавляем в макрос​​ окно) допустим за​ Is Nothing And​ другом листе или​ выпадающий список. Открываем​
  • ​ и ссылок на​​ предлагается выбрать как​​ «Тип данных» выбираем​​ вышло окно, на​ кто родиться только​

​39353​ списком» — это​да​Свойства (Properties)​Найдите значок выпадающего списка​(Insert — Name -​ = vbRed добавляем​ и все?​ неделю до окончания​ Target.Cells.Count = 1​ в другой книге,​ параметры инструмента «Проверка​ статьи справки. Он​

​ меры измерения килограммы​ параметр «Список». В​ котором будет написано,​​ в 2010 а​​KuklP​ и есть выпадающий​нет​, которая откроет окно​ среди элементов управления​ Define),​ в него параметр​StoTisteg​​ действия инструкции. Подскажите​​ Then Application.EnableEvents =​ стандартный способ не​ данных» (выше описан​ выбран по умолчанию.​ и граммы, а​

Итоговая сравнительная таблица всех способов

​ поле «Источник» ставим​​ типа «Я макрос,​ ​ на остальных кто​​: Привет, Дим. Там​ ​ список. Нарисуйте мышкой​​Возможность создания связанных выпадающих​ ​ со списком всех​​ форм (не ActiveX!).​
​если Excel 2007​ ​ истёкшей инструкции, после​ ​:​ ​ такое возможно сделать​
​ False If Len(Target.Offset(1,​ работает. Решить задачу​ ​ путь). В поле​ ​Не показывать расширенные всплывающие​ ​ при выборе масла​
​ знак равно, и​ ​ я сам все​ ​ например в 1990​
​ вроде о будильнике​ прямоугольник в форме​ ​ списков​ ​ возможных настроек для​ ​ Ориентируйтесь по всплывающим​
​ или новее -​​ завершения цикла по​ ​Апострофф​ ​ в excel в​ ​ 0)) = 0​
​ можно с помощью​ «Источник» прописываем такую​ ​ подсказки.​ ​ растительного – литры​ ​ сразу без пробелов​

Знатокам Word, Excel. Как сделать при наведении мышки на слово или элемент выпадающее сообщение?

​ сделал»)​​ не всплывает​ речь шла. А​ поля. Выделите правой​нет​

​ выделенного объекта:​​ подсказкам -​
​ откройте вкладку​ ws проверяем число​
​, я бы на​ виде скрипта как​ Then Target.Offset(1, 0)​ функции ДВССЫЛ: она​ функцию:​ Этот параметр отключает​ и миллилитры.​ пишем имя списка,​Александр погребняк​Юрий М​ тут напоминалка о​ кнопкой мыши нарисованный​да​
​Самые нужные и полезные​
​Поле со списком​Формулы (Formulas)​
​ Item’ов в ListBox’е​ Activate повесил на​ message box?. К​ = Target Else​ сформирует правильную ссылку​Протестируем. Вот наша таблица​ отображение улучшенных всплывающих​Прежде всего, подготовим таблицу,​ которое присвоили ему​: Макросы — выделяешь​: Посмотрите здесь:​ ДР нужна. Я​ список и укажите​нет​ свойства, которые можно​:​и воспользуйтесь кнопкой​ и если больше​ случай месяцами не​ сообщению прикладываю частичку​ Target.End(xlDown).Offset(1, 0) =​ на внешний источник​ со списком на​ подсказок для вывода​
​ где будут располагаться​
​ выше. Жмем на​ свой макрос -​
​Если бы Вы​ такую выкладывал как-то.​ команду «Формат объекта…».​Anatoliy​ и нужно настроить:​Щелкните по значку​Диспетчер имен (Name Manager)​ нуля, вызываем форму.​ перезагружаемого компа​ файла. Данная напоминалка​ Target End If​ информации.​ одном листе:​
​ только имени команды​
​ выпадающие списки, и​ кнопку «OK».​
​ Изменить — перед​ обратили внимание на​Юрий М​6​: Кликаешь правой клавишей​ListFillRange​ и нарисуйте небольшой​, затем​rinat_n​rinat_n​ нужна, так как​ Target.ClearContents Application.EnableEvents =​Делаем активной ячейку, куда​Добавим в таблицу новое​ и, возможно, сочетания​
​ отдельно сделаем списки​
​Выпадающий список готов. Теперь,​ последней строчкой End​ моё сообщение 23.09.2010,​: Я тоже что-то​Как сделать выпадающий​ мыши/выбираешь из списка,​- диапазон ячеек,​ горизонтальный прямоугольник -​Создать​: StoTisteg, напишите пожалуйста​: StoTisteg, подскажите Activate​
​ периодически забывается обновить​
​ True End If​ хотим поместить раскрывающийся​
​ значение «елка».​ клавиш.​ с наименованием продуктов​ при нажатии на​ Sub вставляешь MsgBox​ 22:47 и набрали​ такое делал. Помню,​ список в экселе​ вставить примечание, так​ откуда берутся данные​ будущий список.​. Введите имя (можно​ скрипт, дабы мне​ куда добавить? чтоб​ инструкцию. Также возможно​ End Sub​ список.​Теперь удалим значение «береза».​Не показывать всплывающие подсказки.​ и мер измерения.​
​ кнопку у каждой​
​ («Работа макроса окончена»).​ в поиске -​ там ещё была​В появившемся диалоговом​ же можешь гиперссылку.​ для списка. Выделить​Щелкните по нарисованному списку​ любое, но обязательно​ не совершить ошибок​ месяц проверку проводил.​ ли напоминалку разнести​Чтобы выбираемые значения отображались​Открываем параметры проверки данных.​Осуществить задуманное нам помогла​ Этот параметр отключает​Присваиваем каждому из списков​ ячейки указанного диапазона​ Отправил пример на​ мигалка, то сами​ мигалка (ZVI помог).​ окне в поле​
​Антон​
​ мышью диапазон он​
​ правой кнопкой мыши​
​ без пробелов и​
​Программирование мне не​
​Апострофф​
​ на несколько страниц​
​ в одной ячейке,​
​ В поле «Источник»​ «умная таблица», которая​ отображение как улучшенных,​

​ именованный диапазон, как​​ будет появляться список​ почту​ нашли бы это.​ В поиск -​ «Формировать список по​: 1​ не даст, надо​ и выберите команду​ начать с буквы!)​

всплывающее окно

​ дано​​:​ в одной книге?​ разделенные любым знаком​ вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).​

​ легка «расширяется», меняется.​​ так и обычных​
​ это мы уже​ параметров, среди которых​
​Pauk​Владимир​ напоминалка. Выбор есть​ диапазону» задайте нужный​Как сделать выпадающий​ просто вписать его​Формат объекта (Format control)​

​ для выделенного диапазона​​А Вам​rinat_n​Апострофф​

​ препинания, применим такой​

​Имя файла, из которого​​Теперь сделаем так, чтобы​ всплывающих подсказок для​ делали ранее с​ можно выбрать любой​: Тут поищи​: А откуда Вы​

​ :-)​​ диапазон ячеек. Для​ список в экселе​ руками с клавиатуры​. В появившемся диалоговом​ (например​за ответы и​, Вы читать умеете?​

​:​​ модуль.​ берется информация для​ можно было вводить​ вывода только имени​

​ обычными выпадающими списками.​​ для добавления в​άηϑρέΰ βσλσRσδζκμù ҂ 483643853​ знаете, кто и​vikttur​ этого мышкой выделите​В таблице или​ (например, Лист2!A1:A5)​

​ окне задайте​​Товары​ пути решений​ или​rinat_n​Private Sub Worksheet_Change(ByVal​
​ списка, заключено в​ новые значения прямо​

​ команды.​​В первой ячейке создаём​ ячейку.​
​: MsgBox в помощь​ когда родится в​: Я таких примеров​ ячейки, которые должны​

​ списке выделите ячейки​​LinkedCell​Формировать список по диапазону​). Нажмите​

​AchilleS​​THISWORKBOOK​, непонятно что у​ Target As Range)​ квадратные скобки. Этот​
​ в ячейку с​В начало страницы​ список точно таким​Второй способ предполагает создание​Abram pupkin​ будущем?​ не встречал. У​ попасть в данный​ с теми данными,​
​- связанная ячейка,​- выделите ячейки​

​ОК​​: Добрый день!​, если не по​ вас в столбце​On Error Resume​

​ файл должен быть​​ этим списком. И​Примечание:​ же образом, как​ выпадающего списка с​: Функция Msgbox выводит​хз​ каждого столбца свой?​

​ выпадающий список Excel.​
​ которые вы хотите​

​ куда будет выводиться​​ с наименованиями товаров,​.​Подскажите, пожалуйста, как​ нашенскому.​ Е — дата​ Next​ открыт. Если книга​

​ данные автоматически добавлялись​​ В видео показан​ делали это ранее,​ помощью инструментов разработчика,​

​ на экран сообщение.​​: вот именно я​ :)​ В поле «Связь​ поместить в выпадающий​ выбранный из списка​ которые должны попасть​Выделите ячейки (можно сразу​

​ сделать так, чтобы​​StoTisteg​
​ последнего пересмотра или​If Not Intersect(Target,​ с нужными значениями​ в диапазон.​ пользовательский интерфейс Office​ через проверку данных.​ а именно с​

​Скопируй и вставь​​ не знаю когда​Guest​ с ячейкой» установите​ список. В меню​

​ элемент​​ в список​ несколько), в которых​ при открытии определенного​:​

​ дата следующего пересмотра.​​ Range(«C2:C5»)) Is Nothing​ находится в другой​Сформируем именованный диапазон. Путь:​ 2010, однако оно​

​Во второй ячейке тоже​​ использованием ActiveX. По​ после макроса :​ у этих клиентов​: мне надо когда​ номер ячейки для​ выберите пункты «Вставка»​

​ListRows​​Связь с ячейкой​ хотите получить выпадающий​ файла появлялось окошко​rinat_n​

​Если последнего, то​​ And Target.Cells.Count =​ папке, нужно указывать​ «Формулы» — «Диспетчер​

​ хорошо демонстрирует работу​​ запускаем окно проверки​ умолчанию, функции инструментов​MsgBox » Все​ день рождение​ заходиш в фаил​ вывода порядкового номера​

​ — «Имя» -​​- количество отображаемых​- укажите ячейку​
​ список и выберите​

​ с определенной информацией​​, всё тот же​

​ какого рожна там​​ 1 Then​ путь полностью.​ имен» — «Создать».​

​ аналогичных функций и​​ данных, но в​ разработчика отсутствуют, поэтому​ готово !» &​Юрий М​
​ что бы всплывало​ элемента, выбранного в​

​ «Присвоить». Далее, в​​ строк​ куда нужно выводить​ в меню (на​ (например, инструкцией к​ код в точности​ делает формула, да​Application.EnableEvents = False​Возьмем три именованных диапазона:​ Вводим уникальное название​ в Office 2013.​

​ графе «Источник» вводим​​ нам, прежде всего,​ vbLf & «​: хз, Вы мой​ окно автоматически что​ списке. Задайте требуемое​ запрашиваемом поле, введите​Font​ порядковый номер выбранного​

Как сделать всплывающее окно в EXcel так, чтобы по окончанию работы макроса вышло маленькое сообщение «Расчет окончен»

​ вкладке)​ тому, что находится​ туда же, только​ ещё и кривая​newVal = Target​Это обязательное условие. Выше​ диапазона – ОК.​В начало страницы​ функцию «=ДВССЫЛ» и​ нужно будет их​

​ Макрос решил вашу​​ мой второй файл​ у одного из​ количество строк создаваемого​ имя для выделенного​- шрифт, размер,​ пользователем элемента.​Данные — Проверка (Data​ в файле).​

​ вместо Private Sub​​ к тому же?​

​Application.Undo​​ описано, как сделать​

​Создаем раскрывающийся список в​​Под выпадающим списком понимается​ адрес первой ячейки.​
​ включить. Для этого,​ проблему «​
​ из темы, указанной​ клиентов сегодня день​ списка. Кнопка «Ок»​ диапазона и нажмите​ начертание (курсив, подчеркивание​

Источник

Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Еще…Меньше

Применение

Объект Form

Объект Report

Свойство Modal (Модальная) указывает, открывается ли форма или отчет как модальный окно. Когда форма или отчет открываются в виде модального окна, необходимо закрыть его, прежде чем перемещать фокус к другому объекту. Свойство имеет значение типа Boolean, доступное для чтения или записи.

выражение.Modal

выражение — обязательный аргумент. Выражение, которое возвращает один из объектов в списке «Применяется к».

Замечания

Свойство Modal может принимать следующие значения:

Значение

Visual Basic

Описание

Да

True

Форма или отчет открывается как модальное окно.

Нет

False

(Значение по умолчанию.) Форма открывается как немодальное окно.

Это свойство можно задать с помощью страницы свойств формы или отчета, макроса или кода Visual Basic для приложений (VBA).

При открытии модального окна другие окна в Microsoft Office Access 2007 будут недоступны, пока не будет закрыта форма (однако можно переключиться на окна других приложений). Чтобы также отключить доступ к меню и к панелям инструментов, задайте значение «Да» для свойств Modal (Модальное окно) и PopUp (Всплывающее окно).

Свойство BorderStyle (Тип границы) используется для указания типа границы формы. Обычно для свойства BorderStyle модальных форм задается значение Dialog (Диалог).

Совет

С помощью свойств Modal (Модальное окно), PopUp (Всплывающее окно) и BorderStyle (Тип границы) можно создать настраиваемое диалоговое окно. Задайте для свойств Modal и PopUp значение Yes (Да), а для свойства BorderStyle — значение Dialog (Диалог).

Форма становится модальной, только если свойство Modal имеет значение «Да» и выполняются следующие условия:

  • Форма открывается в режиме формы в области навигации.

  • Форма открывается в режиме формы с помощью макроса или кода VBA.

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

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

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

Примечание: Чтобы открыть форму, в которой свойства Modal (Модальное окно) и PopUp (Всплывающее окно) имеют значения «Да», можно воспользоваться значением «Диалог» аргумента «Режим окна» в макрокоманде ОткрытьФорму.

Пример

Для получения значения свойства Modal формы Order Entry можно использовать следующий синтаксис:

Dim b As Booleanb = Forms(«Order Entry»).Modal

Для задания значения свойства Modal применяется следующий синтаксис:

Forms(«Order Entry»).Modal = True

Нужна дополнительная помощь?

Modeless UserForms allows you to interact with Excel while the form is open and visible. This means that you can select cells, enter data, move to other worksheets, run new macros, and do everything you would normally do in Excel, all while the form is open and visible.

By default, UserForms are Modal, which means that when they are open you cannot do anything else in Excel except to interact with that form; this also means that no macros will run unless initiated by the form that is visible. This is the normal operation for forms.

Here, you will learn how to make Modeless UserForms, which will include how to do it with and without VBA.

Sections:

How to Make a Modless Form By Hand

How to Make a Modless Form with Code

Meaning of Modeless UserForms

Notes

How to Make a Modless Form By Hand

VBA Window (Alt+F11) > Select the UserForm > Look to the Properties window (F4) > Change the ShowModal property to False.

ba9dbd1cb2fd8716226fddeaf578afc9.png

How to Make a Modless Form with Code

UserForm1.Show vbModeless

vbModeless is what tells Excel to make the form Modeless.

You put this after the line that you use to display the form.

In this example, this code is contained within a module and looks like this:

Sub ShowUserForm()

UserForm1.Show vbModeless

End Sub

You do not have to put any additional code within the code section for the UserForm itself; merely add vbModeless after .Show in the macro that is used to show the form. 

In the sample file for this tutorial, this particular code is attached to a button that runs the form.

Meaning of Modeless UserForms

When you have a Modal form, the default kind of form, where you cannot do anything in Excel while the form is visible, no code in Excel will be run unless initiated by the UserForm.

This means that if you have any code after the line that displays the form, none of that code will run until after the form is closed.

However, if you use a modeless form, code within Excel will continue to run after the form is made visible.

We can test this by putting code for a small popup window after the code that runs the form.

Default Modal Form with MsgBox

Sub ShowUserForm()

UserForm1.Show

'Try to display a message box after the form is initialized.
MsgBox "Hi!"

End Sub

Run this code and the message box will not appear until after you close the form.

Modeless Form with MsgBox

Sub ShowUserForm()

UserForm1.Show vbModeless

'Try to display a message box after the form is initialized.
MsgBox "Hi!"

End Sub

Run this code and you will see the msgbox appear over the form because code execution was not paused while the form was displayed.

6c85857f9ce37e374090c2f9f3d82de1.jpg

Notes

If you are not familiar with how to run or startup a UserForm, please read our tutorial on showing a UserForm.

The concept of Modal and Modeless forms might be a little confusing at first, so I highly recommend that you download the sample file and play around with these examples. The code to launch the form is placed within a regular macro in a module and attached to a button within the worksheet.

Similar Content on TeachExcel

UserForm Properties List and Explanation

Tutorial: This is a listing of all properties for the UserForm in Excel. Each property includes an e…

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…

UserForm Events

Tutorial: Explanation of UserForm Events in Excel. This includes what they are, how to use them, and…

UserForm Controls

Tutorial: This tutorial gives you an overview of what a UserForm Control is and how to add them to y…

Use Macros with UserForms

Tutorial: This tutorial explains how macros interact with UserForms.
This includes an explanation of…

Showing a UserForm

Tutorial: How to display a UserForm in Excel and some common things you might want to do when you di…

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

 

ytk5kyky

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

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

Всегда использую один код для открытия книги:  
Set wb = Workbooks.Open(SourcePath & fName)  
При этом, если поставить далее макрос на паузу (любым способом) книга wb становится модальной по отношению к ThisWorkbook. Т.е. пока макрос на паузе или wb открыта, окно ThisWorkbook не хочет выходить на передний план.  

  Или не становится модальной.  
От чего это зависит — не пойму.

 

Интересный способ открытия книги, жаль помочь не могу, буду ждать вместе с Вами ответа ;)

 

Не знаю, что такое модальная книга, но…  
может, вы забываете включить обновление экрана?  

  Перед «паузой» поставьте application.screenupdating=true

 

ytk5kyky

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

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

В приложенном архиве файл мод.хлс открывает файл wb.хлс  
после чего макрос встает на паузу.  
Теперь на панели задач два окна мод и wb, wb активное, мод —  нет, попробуйте выбрать мод на передний план щелчком по панели задач.  

  application.screenupdating=true перед стоп поставил, хотя и не отключал.

 

> пока макрос на паузе или wb открыта, окно ThisWorkbook не хочет выходить на передний план  

  Попробуйте  

  Set wb = Workbooks.Open(SourcePath & fName)  
ThisWorkbook.Activate  
MsgBox «Какая книга на переднем плане?»

 

ytk5kyky

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

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

Выражение ThisWorkbook.Activate эквивалентно щелчку по панели задач. Почему оно работает, а щелчок нет?  
Вопрос не в том, как сделать активной ту или иную книгу. Вопрос: как не дать окну стать модальным?  

  Давайте поясню зачем оно надо. Если макрос остановился с ошибкой или я его прогоняю пошагово, то в какой-то момент мне нужно посмотреть на книгу мод, но она «прикрыта» сверху книгой wb, чтобы ее посмотреть нужно либо остановить макрос, либо закрыть wb — в любом случае продолжить макрос с того же места не представляется возможным. А вставлять в код ThisWorkbook.Activate уже поздно :)

 

ytk5kyky

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

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

Можно мне апнуть?  
Я понимаю, блажь конечно у меня с окнами, это же не впр или сбор данных из разных книг. Но все же.  
У меня есть еще пара моментов, на которые нет ответа — просто смирился  
Могу из задать

 

ytk5kyky

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

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

В процессе отладки чего-либо у меня точно несколько книг открыто бывает, а создавая пример выше — была только одна книга.    
Я тоже склоняюсь к мысли, что именно некое состояние на момент запуска влияет.  
Но не количество книг.  

  > Чего тянуть-то?  

  В основном лень и забывчивость мешает. Ну понимание бесперспективности — слишком у меня вопросы специфические.

 

слэн

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

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

{quote}{login=Лузер™}{date=11.01.2011 05:13}{thema=}{post}В приложенном архиве файл мод.хлс открывает файл wb.хлс  
после чего макрос встает на паузу.  
Теперь на панели задач два окна мод и wb, wb активное, мод —  нет, попробуйте выбрать мод на передний план щелчком по панели задач.  

  application.screenupdating=true перед стоп поставил, хотя и не отключал.{/post}{/quote}  

  посмотреть книгу можно введя в окне immediate thisworkbook.activate

 

проблему не решает,  
но хотя бы даёт возможность выбрать  
какая книга будет модальной при паузе  
(эксперименты показали что снеся wb на задний план, thisworkbook будет модальной по отношению к wb, то есть проблема не в экселе, а в работе windows с коллекцией окон экселя)  

  For i = 1 To Application.Windows.Count  
Windows(1).WindowState = xlMinimized  
Next i  
Stop

 

ytk5kyky

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

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

#11

13.01.2011 17:57:37

{quote}{login=слэн}{date=13.01.2011 03:31}{thema=Re: }{post}  
посмотреть книгу можно введя в окне immediate thisworkbook.activate{/post}{/quote}Да, наверное, самый простой способ.  
Еще можно через Вид — Перейти в другое окно (2003: Окно — список окон)  
На самом деле окно wb не совсем модально, а только на панели задач не выбирается другое.  

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

Bite my shiny metal ass!      

В этой заметке описываются методы создания пользовательских диалоговых окон, которые существенно расширяют стандартные возможности Excel. Диалоговые окна – это наиболее важный элемент пользовательского интерфейса в Windows. Они применяются практически в каждом приложении Windows, и большинство пользователей неплохо представляет, как они работают. Разработчики Excel создают пользовательские диалоговые окна с помощью пользовательских форм (UserForm). Кроме того, в VBA имеются средства, обеспечивающие создание типовых диалоговых окон.[1]

Рис. 1. Работа процедуры GetName

Скачать заметку в формате Word или pdf, примеры в архиве

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

Использование окон ввода данных

Окно ввода данных — это простое диалоговое окно, которое позволяет пользователю ввести одно значение. Например, можно применить окно ввода данных, чтобы предоставить пользователю возможность ввести текст, число или диапазон значений. Для создания окна ввода предназначены две функции InputBox: одна— в VBA, а вторая является методом объекта Application.

Функция InputBox в VBA

Функция имеет следующий синтаксис:

InputBox(запрос [, заголовок] [, по_умолчанию] [, xpos] [, ypos] [, справка, раздел])

  • Запрос. Указывает текст, отображаемый в окне ввода (обязательный параметр).
  • Заголовок. Определяет заголовок окна ввода (необязательный параметр).
  • По_умолчанию. Задает значение, которое отображается в окне ввода по умолчанию (необязательный параметр).
  • xpos, ypos. Определяют координаты верхнего левого угла окна ввода на экране (необязательные параметры).
  • Справка, раздел. Указывают файл и раздел в справочной системе (необязательные параметры).

Функция InputBox запрашивает у пользователя одно значение. Она всегда возвращает строку, поэтому результат нужно будет преобразовать в числовое значение. Текст, отображаемый в окне ввода, может достигать 1024 символов (длину допускается изменять в зависимости от ширины используемых символов). Если определить раздел справочной системы, то в диалоговом окне будет отображена кнопка Справка.

Процедура GetName запрашивает у пользователя полное имя (имя и фамилию). Затем программа выделяет имя и отображает приветствие в окне сообщения (см. рис. 1; код функции можно найти в файле VBA inputbox.xlsm).

Sub GetName()

    Dim UserName As String

    Dim FirstSpace As Integer

    Do Until UserName <> «»

        UserName = InputBox(«Укажите имя и фамилию: «, _

            «Назовите себя»)

    Loop

    FirstSpace = InStr(UserName, » «)

    If FirstSpace <> 0 Then

        UserName = Left(UserName, FirstSpace 1)

    End If

    MsgBox «Привет « & UserName

End Sub

Обратите внимание: функция InputBox вызывается в цикле Do Until. Это позволяет убедиться в том, что данные введены в окно. Если пользователь щелкнет на кнопке Отмена или не введет текст, то переменная UserName будет содержать пустую строку, а окно ввода данных появится повторно. Далее в процедуре будет предпринята попытка получить имя пользователя путем поиска первого символа пробела (для этого применяется функция InStr). Таким образом, можно воспользоваться функцией Left для получения всех символов, расположенных слева от символа пробела. Если символ пробела не найден, то используется все введенное имя.

Если строка, предоставленная в качестве результата выполнения функции InputBox, выглядит как число, ее можно преобразовать с помощью функции VBA Val.

В процедуре GetWord пользователю предлагается ввести пропущенное слово (рис. 2). Этот пример также иллюстрирует применение именованных аргументов (р и t). Текст запроса выбирается из ячейки А1 рабочего листа.

Sub GetWord()

    Dim TheWord As String

    Dim p As String

    Dim t As String

    p = Range(«A1»)

    t = «Какое слово пропущено?»

    TheWord = InputBox(prompt:=p, Title:=t)

    If UCase(TheWord) = «ВОДОКАЧКУ» Then

        MsgBox «Верно.»

    Else

        MsgBox «Не верно.»

    End If

End Sub

Рис. 2. Использование функции VBA inputBox, отображающей запрос

Метод Excel InputBox

Метод Excel InputBox по сравнению с функцией VBA InputBox предоставляет три преимущества:

  • возможность задать тип возвращаемого значения;
  • возможность указать диапазон листа путем выделения с помощью мыши;
  • автоматическая проверка правильности введенных данных.

Метод InputBox имеет следующий синтаксис.

InputBox(запрос, [, заголовок], [, по_умолчанию], [, слева], [, сверху], [, справка, раздел], [, тип])

  • Запрос. Указывает текст, отображаемый в окне ввода (обязательный параметр).
  • Заголовок. Определяет заголовок окна ввода (необязательный параметр).
  • По_умолчанию. Задает значение, которое отображается в окне ввода по умолчанию (необязательный параметр).
  • Слева, сверху. Определяют координаты верхнего левого угла окна ввода на экране (необязательные параметры).
  • Справка, раздел. Указывают файл и раздел в справочной системе (необязательные параметры).
  • Тип. Указывает код типа данных, который будет возвращаться методом (необязательный параметр; значения см. рис. 3).

Рис. 3. Коды типов данных, возвращаемые методом Excel InputBox

Используя сумму приведенных выше значений, можно возвратить несколько типов данных. Например, для отображения окна ввода, которое принимает текстовый или числовой тип данных, установите код равным 3 (1 + 2 или число + текст). Если в качестве кода типа данных применить значение 8, то пользователь сможет ввести в поле адрес ячейки или диапазона ячеек. Пользователь также можент выбрать диапазон на текущем рабочем листе.

В процедуре EraseRange используется метод InputBox. Пользователь может указать удаляемый диапазон (рис. 4). Адрес диапазона вводится в окно вручную, или выделяется мышью на листе. Метод InputBox с кодом 8 возвращает объект Range (обратите внимание на ключевое слово Set). После этого выбранный диапазон очищается (с помощью метода Clear). По умолчанию в поле окна ввода отображается адрес текущей выделенной ячейки. Если в окне ввода щелкнуть на кнопке Отмена, то оператор On Error завершит процедуру.

Sub EraseRange()

    Dim UserRange As Range

    On Error GoTo Canceled

    Set UserRange = Application.InputBox _

        (Prompt:=«Удаляемый диапазон:», _

        Title:=«Удаление диапазона», _

        Default:=Selection.Address, _

        Type:=8)

    UserRange.Clear

    UserRange.Select

Canceled:

End Sub

Рис. 4. Пример использования метода InputBox для выбора диапазона

Если в процедуре EraseRange ввести не диапазон адресов, то Excel отобразит сообщение (рис. 5) и позволит пользователю повторить ввод данных.

Рис. 5. Метод InputBox автоматически проверяет вводимые данные

Функция VBA MsgBox

Функция VBA MsgBox служит для отображения сообщения. Также она передает результат щелчка на кнопке ОК или Отмена). Синтаксис функции:

MsgBox(запрос[, кнопки][, заголовок][, справка, раздел])

  • Запрос. Определяет текст, который будет отображаться в окне сообщения (обязательный параметр).
  • Кнопки. Содержит числовое выражение (или константу), которое определяет кнопки, отображаемые в окне сообщения (необязательный параметр; рис. 6). Также можно задать кнопку по умолчанию.
  • Заголовок. Содержит заголовок окна сообщения (необязательный параметр).
  • Справка, раздел. Указывают файл и раздел справочной системы (необязательные параметры).

Рис. 6. Константы и значения, используемые для выбора кнопок в функции MsgBox

Первая группа значений (0–5) описывает номер и тип кнопок в диалоговом окне. Вторая группа (16, 32, 48, 64) описывает стиль значка. Третья группа (0, 256, 512) определяет, какая кнопка назначена по умолчанию. Четвертая группа (0, 4096) определяет модальность окна сообщения. Пятая указывает, показывать ли окно сообщений поверх других окон, устанавливает выравнивание и направление текста. В процессе сложения чисел для получения окончательного значения аргумента Buttons следует использовать только одно число из каждой группы.

Можно использовать функцию MsgBox в качестве процедуры (для отображения сообщения), а также присвоить возвращаемое этой функцией значение переменной. Функция MsgBox возвращает результат, представляющий кнопку, на которой щелкнул пользователь. В следующем примере отображается сообщение и не возвращается результат (код функций, приведенных в этом разделе см. также в файле VBA msgbox.xlsm).

Sub MsgBoxDemo()

    MsgBox «При выполнении макроса ошибок не произошло.»

End Sub

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

Sub GetAnswer()

    Dim Ans As Integer

    Ans = MsgBox(«Продолжать?», vbYesNo)

    Select Case Ans

        Case vbYes

            ‘ … [код при Ans равно Yes]

        Case vbNo

            ‘ ... [код при Ans равно No]

    End Select

End Sub

Рис. 7. Константы, возвращаемые MsgBox

Функция MsgBox возвращает переменную, имеющую тип Integer. Вам необязательно использовать переменную для хранения результата выполнения функции MsgBox. Следующая процедура представляет собой вариацию процедуры GetAnswer.

Sub GetAnswer2()

    If MsgBox(«Продолжать?», vbYesNo) = vbYes Then

‘ … [код при Ans равно Yes]

    Else

... [код при Ans равно No]

    End If

End Sub

В следующем примере функции используется комбинация констант для отображения окна сообщения с кнопками Да, Нет и знаком вопроса (рис. 8). Вторая кнопка (Нет) используется по умолчанию. Для простоты константы добавлены в переменную Config.

Private Function ContinueProcedure() As Boolean

   Dim Config As Integer

   Dim Ans As Integer

   Config = vbYesNo + vbQuestion + vbDefaultButton2

   Ans = MsgBox(«Произошла ошибка. Продолжить?», Config)

   If Ans = vbYes Then ContinueProcedure = True _

      Else ContinueProcedure = False

End Function

Рис. 8. Параметр Кнопки функции MsgBox определяет кнопки, которые отображаются в окне сообщения

В файле VBA msgbox.xlsm функция ContinueProcedure в демонстрационных целях представлена в виде процедуры. Функция ContinueProcedure может вызываться из другой процедуры. Например, оператор

If Not ContinueProcedure() Then Exit Sub

вызывает функцию ContinueProcedure (которая отображает окно сообщения). Если функция возвращает значение ЛОЖЬ (т.е. пользователь щелкнул на кнопке Нет), то процедура будет завершена. В противном случае выполняется следующий оператор.

Если в сообщении необходимо указать разрыв строки (рис. 9), воспользуйтесь константой vbCrLf (или vbNewLine):

Sub MultiLine()

    Dim Msg As String

    Msg = «Это первая строка.» & vbCrLf & vbNewLine

    Msg = Msg & «Вторая строка.» & vbCrLf

    Msg = Msg & «Третья строка.»

    MsgBox Msg

End Sub

Рис. 9. Разбиение сообщения на несколько строк

Для включения в сообщение символа табуляции применяется константа vbTab. В процедуре ShowRange окно сообщения используется для отображения диапазона значений размером 10 строк на 3 столбца — ячейки А1:С10 (рис. 10). В этом случае столбцы разделены с помощью константы vbTab. Новые строки вставляются с помощью константы vbCrLf. Функция MsgBox принимает в качестве параметра строку, длина которой не превышает 1023 символов. Такая длина задает ограничение на количество ячеек, которое можно отобразить в сообщении.

Sub ShowRange()

    Dim Msg As String

    Dim r As Integer, c As Integer

    Msg = «»

    For r = 1 To 10

        For c = 1 To 3

            Msg = Msg & Cells(r, c).Text

            If c <> 3 Then Msg = Msg & vbTab

            Next c

            Msg = Msg & vbCrLf

        Next r

    MsgBox Msg

End Sub

Рис. 10. Текст в этом окне сообщения содержит символы табуляции и разрыва строк

Метод Excel GetOpenFilename

Если приложению необходимо получить от пользователя имя файла, то можно воспользоваться функцией InputBox, но этот подход часто приводит к возникновению ошибок. Более надежным считается использование метода GetOpenFilename объекта Application, который позволяет удостовериться, что приложение получило корректное имя файла (а также его полный путь). Данный метод позволяет отобразить стандартное диалоговое окно Открытие документа, но при этом указанный файл не открывается. Вместо этого метод возвращает строку, которая содержит путь и имя файла, выбранные пользователем. По окончании данного процесса с именем файла можно делать все что угодно. Синтаксис (все параметры необязательные):

Application.GetOpenFilename(фильтр_файла, индекс_фильтра, заголовок, множественный_выбор)

  • Фильтр_файла. Содержит строку, определяющую критерий фильтрации файлов (необязательный параметр).
  • Индекс_фильтра. Указывает индексный номер того критерия фильтрации файлов, который используется по умолчанию (необязательный параметр).
  • Заголовок. Содержит заголовок диалогового окна (необязательный параметр). Если этот параметр не указать, то будет использован заголовок Открытие документа.
  • Множественный_выбор. Необязательный параметр. Если он имеет значение ИСТИНА, можно выбрать несколько имен файлов. Имя каждого файла заносится в массив. По умолчанию данный параметр имеет значение ЛОЖЬ.

Аргумент Фильтр_файла определяет содержимое раскрывающегося списка Тип файлов, находящегося в окне Открытие документа. Аргумент состоит из строки, определяющей отображаемое значение, а также строки действительной спецификации типа файлов, в которой находятся групповые символы. Оба элемента аргумента разделены запятыми. Если этот аргумент не указывать, то будет использовано значение, заданное по умолчанию: "Все файлы (*.*),*.*". Первая часть строки Все файлы (*.*) – то текст, отображаемый в раскрывающемся списке тип файлов. Вторая часть строки *.* указывает тип отображаемых файлов.

В следующих инструкциях переменной Filt присваивается строковое значение. Эта строка впоследствии используется в качестве аргумента фильтр_файла метода GetOpenFilename. В данном случае диалоговое окно предоставит пользователю возможность выбрать один из четырех типов файлов (кроме варианта Все файлы). Если задать значение переменной Filt, то будет использоваться оператор конкатенации строки VBA. Этот способ упрощает управление громоздкими и сложными аргументами.

Filt = «Текстовые файлы (*.txt),*.txt,» & _

   «Файлы Lotus (*.prn),*.prn,» & _

   «Файлы, разделенные запятой (*.csv),*.csv,» & _

   «Файлы ASCII (*.asc),*.asc,» & _

   «Все файлы (*.*),*.*»

В следующем примере у пользователя запрашивается имя файла. При этом в поле типа файлов используются пять фильтров (код содержится в файле prompt for file.xlsm).

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

Sub GetImportFileName()

    Dim Filt As String

    Dim FilterIndex As Integer

    Dim FileName As Variant

    Dim Title As String

‘   Настройка списка фильтров

    Filt = «Text Files (*.txt),*.txt,» & _

            «Lotus Files (*.prn),*.prn,» & _

            «Comma Separated Files (*.csv),*.csv,» & _

            «ASCII Files (*.asc),*.asc,» & _

            «Все файлы (*.*),*.*»

   Отображает *.* по умолчанию

    FilterIndex = 3

‘   Настройка заголовка диалогового окна

    Title = «Выберите файл для импорта»

   Получение имени файла

    FileName = Application.GetOpenFilename _

        (FileFilter:=Filt, _

         FilterIndex:=FilterIndex, _

         Title:=Title)

‘   При отмене выйти из окна

    If FileName = False Then

        MsgBox «Файл не выбран.»

        Exit Sub

    End If

   Отображение полного имени и пути

    MsgBox «Вы выбрали « & FileName

End Sub

На рис. 11 показано диалоговое окно, которое выводится на экран после выполнения этой процедуры (по умолчанию предлагается фильтр *.csv).

Рис. 11. Метод GetOpenFilename отображает диалоговое окно, в котором выбирается файл

В следующем примере пользователь может, удерживая нажатыми клавиши <Shift> и <Ctrl>, выбрать в окне несколько файлов. Обратите внимание, что событие использования кнопки Отмена определяется по наличию переменной массива FileName. Если пользователь не щелкнул на кнопке Отмена, то результирующий массив будет состоять как минимум из одного элемента. В этом примере список выбранных файлов отображается в окне сообщения.

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

Sub GetImportFileName2()

    Dim Filt As String

    Dim FilterIndex As Integer

    Dim FileName As Variant

    Dim Title As String

    Dim i As Integer

    Dim Msg As String

‘   Установка списка фильтров файлов

    Filt = «Text Files (*.txt),*.txt,» & _

            «Lotus Files (*.prn),*.prn,» & _

            «Comma Separated Files (*.csv),*.csv,» & _

            «ASCII Files (*.asc),*.asc,» & _

            «All Files (*.*),*.*»

   Отображает *.* по умолчанию

    FilterIndex = 5

‘   Настройка заголовка диалогового окна

    Title = «Выберите файл для импорта»

   Получение имени файла

    FileName = Application.GetOpenFilename _

        (FileFilter:=Filt, _

         FilterIndex:=FilterIndex, _

         Title:=Title, _

         MultiSelect:=True)

‘   Выход в случае отмены работы с диалоговым окном

    If Not IsArray(FileName) Then

        MsgBox «Файл не выбран.»

        Exit Sub

    End If

   Отображение полного пути и имени файлов

    For i = LBound(FileName) To UBound(FileName)

        Msg = Msg & FileName(i) & vbCrLf

    Next i

    MsgBox «Было выбрано:» & vbCrLf & Msg

End Sub

Обратите внимание: переменная FileName определена как массив переменного типа (а не как строка в предыдущем примере). Причина заключается в том, что потенциально FileName может содержать массив значений, а не только одну строку.

Метод Excel GetSaveAsFilename

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

Application.GetSaveAsFilename(начальное_имя, фильтр_файла, индекс_фильтра, заголовок, текст_кнопки)

  • Начальное_имя. Указывает предполагаемое имя файла.
  • Фильтр_файла. Содержит критерий фильтрации отображаемых в окне файлов.
  • Индекс_фильтра. Код критерия фильтрации файлов, который используется по умолчанию.
  • Заголовок. Определяет текст заголовка диалогового окна.

Получение имени папки

Для того чтобы получить имя файла, проще всего воспользоваться описанным выше методом GetOpenFileName. Но если нужно получить лишь имя папки (без названия файла), лучше воспользоваться методом объекта Excel FileDialog. Следующая процедура отображает диалоговое окно, в котором можно выбрать папку (см. также файл get directory.xlsm). С помощью функции MsgBox отображается имя выбранной папки (или сообщение Отменено).

Sub GetAFolder()

    With Application.FileDialog(msoFileDialogFolderPicker)

        .InitialFileName = Application.DefaultFilePath & «»

        .Title = «Выберите местоположение резервной копии.«

        .Show

        If .SelectedItems.Count = 0 Then

            MsgBox «Отменено»

        Else

            MsgBox .SelectedItems(1)

        End If

    End With

End Sub

Объект FileDialog позволяет определить начальную папку путем указания значения свойства InitialFileName. В примере в качестве начальной папки применяется путь к файлам Excel, заданный по умолчанию.

Отображение диалоговых окон Excel

Создаваемый вами код VBA может вызывать на выполнение многие команды Excel, находящиеся на ленте. И если в результате выполнения команды открывается диалоговое окно, ваш код может делать выбор в диалоговом окне (даже если само диалоговое окно не отображается). Например, следующая инструкция VBA эквивалентна выбору команды Главная –> Редактирование –> Найти и выделить –> Перейти и указанию диапазона ячеек А1:СЗ с последующим щелчком на кнопке ОК. Но само диалоговое окно Переход при этом не отображается (именно это и нужно).

Application.Goto Reference:=Range("А1:СЗ")

Иногда же приходится отображать встроенные окна Excel, чтобы пользователь мог сделать свой выбор. Для этого используется коллекция Dialogs объекта Application. Учтите, что в настоящее время компания Microsoft прекратила поддержу этого свойства. В предыдущих версиях Excel пользовательские меню и панели инструментов создавались с помощью объекта CommandBar. В версиях Excel 2007 и Excel 2010 этот объект по-прежнему доступен, хотя и работает не так, как раньше. Начиная с версии Excel 2007 возможности объекта CommandBar были существенно расширены. В частности, объект CommandBar можно использовать для вызова команд ленты с помощью VBA. Многие из команд, доступ к которым открывается с помощью ленты, отображают диалоговое окно. Например, следующая инструкция отображает диалоговое окно Вывод на экран скрытого листа (рис. 12; см. также файл ribbon control names.xlsm):

Application.CommandBars.ExecuteMso("SheetUnhide")

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

Метод ExecuteMso принимает лишь один аргумент, idMso, который представляет элемент управления ленты. К сожалению, сведения о многих параметрах в справочной системе отсутствуют.

В файле ribbon control names.xlsm описаны все названия параметров команд ленты Excel. Поэкспериментируйте с параметрами, перечисленными в этой рабочей книге. Многие из них вызывают команды немедленно (без промежуточных диалоговых окон). Но большинство из них генерирует ошибку при использовании в неправильном контексте. Например, Excel отображает сообщение об ошибке, если команда Functionwizard вызывается в случае выбора диаграммы.

В результате выполнения следующего оператора отображается вкладка Шрифт диалогового окна Формат ячеек:

Application.CommandBars.ExecuteMso("FormatCellsFontDialog")

На самом деле пользоваться объектами CommandBar не стоит, поскольку вряд ли они будут поддерживаться в будущих версиях Excel.

Отображение формы ввода данных

Многие пользователи применяют Excel для управления списками, информация в которых ранжирована по строкам. В Excel поддерживается простой способ работы с подобными типами данных с помощью встроенных форм ввода данных, которые могут создаваться автоматически. Подобная форма предназначена для работы как с обычным диапазоном, так и с диапазоном, оформленным в виде таблицы (с помощью команды Вставка –> Таблицы –> Таблица). Пример формы ввода данных показан на рис. 13 (см. также файл data form example.xlsm).

Рис. 13. Некоторые пользователи предпочитают применять встроенные формы ввода данных Excel для ввода сведений; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке

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

  1. Щелкните правой кнопкой мыши на панели быстрого доступа и в контекстном меню выберите параметр Настройка панели быстрого доступа.
  2. На экране появится вкладка Панель быстрого доступа диалогового окна Параметры Excel.
  3. В раскрывающемся списке Выбрать команды из выберите параметр Команды не на ленте.
  4. В появившемся списке выберите параметр Форма.
  5. Щелкните на кнопке Добавить для добавления выбранной команды на панель быстрого доступа.
  6. Щелкните на кнопке ОК для закрытия диалогового окна Параметры Excel.

После выполнения перечисленных выше действий на панели быстрого доступа появится новый значок.

Для работы с формой ввода данных следует структурировать данные таким образом, чтобы Excel распознавал их в виде таблицы. Начните с указания заголовков столбцов в первой строке диапазона вводимых данных. Выделите любую ячейку в таблице и щелкните на кнопке Форма панели быстрого доступа. Excel отображает диалоговое окно, в котором будут вводиться данные. Для перемещения между текстовыми полями в целях ввода информации используйте клавишу <Tab>. Если ячейка содержит формулу, результат вычислений отображается в виде текста (а не в формате поля ввода данных). Другими словами, невозможно изменить формулы с помощью формы ввода данных.

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

Используйте метод ShowDataForm для отображения формы ввода данных Excel. Единственное требование заключается в том, что активная ячейка должна находиться в диапазоне. Следующий код активизирует ячейку А1 (в таблице), а затем отображает форму ввода данных.

Sub DisplayDataForm()

    Range(«A1»).Select

    ActiveSheet.ShowDataForm

End Sub

[1] По материалам книги Джон Уокенбах. Excel 2010. Профессиональное программирование на VBA. – М: Диалектика, 2013. – С. 387–403.

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

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

  • Excel только дробная часть чисел
  • Excel тип данных другой
  • Excel только для чтения снять режим как
  • Excel тип данных в ячейке строка
  • Excel только дата выхода

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

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