In this guide, we’re going to show you how to show a welcome message in Excel by using macros.
Download Workbook
ThisWorkbook object and Workbook_Open Event
If you want to trigger any action at the startup of your workbook, you must add your code under Workbook_Open. The event must be added into the ThisWorkbook object of your workbook.
You can open the ThisWorkbook object by simply double-clicking on its name in the Project Explorer pane of the Visual Basic for Applications (VBA) window.
The code to show a welcome message
You have two options to show a welcome message: Either use a simple message box (MsgBox) or create your own form and call the form. The message box method is relatively easier to do compared to the form: All you need is a single line of code with your message.
MsgBox "Thank you for using our workbook"
This line pops up a message box with an OK button.
Private Sub Workbook_Open() MsgBox "Thank you for using our workbook" End Sub
Let’s continue with a few customization options that you can apply to welcome message boxes.
Multiple lines
By default, a message box displays your message in a single line. If you want to see more lines in your message box, add the vbNewLine value into the text.
MsgBox "Thank you for using our workbook" & vbNewLine & "SpreadsheetWeb.com"
Dynamic values
You can also concatenate your welcome text with a value in your workbook to add a dynamic value. For example, the following example demonstrates displaying values in cell B4, along with the message itself.
MsgBox "Thank you for using our workbook. " & [B4]
Modifying message icon and title
The default message box doesn’t contain any formatting or icons, and comes with the «Microsoft Excel» title. Each behavior can be altered by supplying the necessary arguments in the code.
The second argument of the MsgBox command determines what the message box includes, like buttons or icons. There are four (4) constant values for icons:
Constant | Description |
vbCritical | Shows the critical message icon |
vbQuestion | Shows the question icon |
vbExclamation | Shows the warning message icon |
vbInformation | Shows the information icon |
The following is an example for using an information icon.
MsgBox "Thank you for using our workbook.", vbInformation
The next argument is for the title. Enter a string value to alter the title of the message box.
If you want to change the title only, omit the second argument. Note that the repeating commas (, ,) indicate the second argument.
MsgBox "Thank you for using our workbook.", , "Welcome"
Save your workbook to ensure showing a welcome message
Our last tip for showing a welcome message article is to save your workbook as a Macro-enabled Excel Workbook (XLSM). Otherwise, your code will not be saved.
Сообщения в Excel. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Содержание
- 1 Как сделать всплывающую подсказку?
- 2 Где находится?
- 3 Настройка условия проверки
- 4 Всплывающая подсказка ячейки Excel
- 5 Вывод сообщения об ошибке
- 6 Подсказки в MS Excel
- 7 Проверка по числу введенных символов
- 8 Проверка по числу
- 9 Выбор из имеющегося списка значений
Изучим простой способ добавления всплывающей подсказки в Excel при вводе данных в ячейку.
Одним из элементов упрощения ввода данных пользователем является добавление всплывающей подсказки, которая появляется при активации конкретной ячейки.
Это позволяет минимизировать возможность ошибки при вводе, а также напоминает какие конкретно данные необходимо ввести в ячейку.
Как сделать всплывающую подсказку?
Чтобы сделать всплывающую подсказку для ячейки выберем на панели вкладок Данные -> Работа с данными -> Проверка данных и в открывшемся окне перейдем в центральную вкладку:
Далее вводим информацию в поля Заголовок и Сообщение, при этом текст введенный в заголовок при отображении подсказки будет показываться жирным шрифтом, а также устанавливаем галочку напротив поля Отображать подсказку, если ячейка является текущей. Нажимаем OK и получаем следующий результат:
Удачи вам и до скорой встречи на страницах блога Tutorexcel.ru!
Во время работы с большими объемами информации, особенно когда ее обработка осуществляется формулами или макросами, важно, чтобы данные не имели ошибок, которые способны повлиять на итог. Сложности в получении корректных исходников появляются, когда они поступают из неструктурированных источников (плохо спроектированные базы данных, ручное заполнение таблиц и форм незаинтересованными в результате людьми). Особенно трудно добиться правильного оформления по определенной маске (шаблону). Например, дату в виде строки можно записать несколькими способами:
- 01.01.2001;
- 01/01/2001;
- 1 января 2001 года и т.д.
В статье описывается функционал, позволяющий упростить процесс сбора и проверки данных в Excel.
Где находится?
Для настройки параметров проверки вводимых значений необходимо на вкладке «Данные» в области «Работа с данными» кликнуть по иконке «Проверка данных» либо выбрать аналогичный пункт из раскрывающегося меню:
На экране появиться окно с настройками по умолчанию, где в качестве типа данных может быть использовано любое значение:
Настройка условия проверки
Изначально требуется выбрать тип проверяемых данных, что будет являться первым условием. Всего предоставлено 8 вариантов:
- Целое число;
- Действительное число;
- Список;
- Дата;
- Время;
- Длина текста;
- Другой.
В соответствии с выбранным пунктом, появляется возможность выбора дополнительных условий. Для чисел, дат, времени и длины текста возможно указать ограничения: меньше, больше, диапазон и т.п. К списку обязательно привязывается источник, а пункт «другой» предлагает ввести формулу, возвращающую логическое значение.
Самым необычным видом является выпадающий список.
Он позволяет выбирать значения, указанные в качестве источника и ограничивать допустимые значения им же. Также возможно создавать динамические выпадающие списки.
Функционал проверки данных в Excel позволяет настраивать всплывающие подсказки для ячеек листа. Для этого следует перейти на вторую вкладку окна проверки вводимых значений – «Сообщение для ввода».
На изображении показан пример возможного сообщения для ячейки, в которую вносятся целые числа от 1 до 31 (настройки вкладки «Параметры»). Заголовок и сообщения указываются по Вашему усмотрению, каких-либо правил к их оформлению нет. Не забудьте установить галочку на поле «Отображать подсказку, если ячейка является текущей», иначе сообщение будет деактивировано.
Пример всплывающей подсказки в Excel:
Вывод сообщения об ошибке
Последняя вкладка окна проверки данных позволяет настроить поведение и вывод сообщений при обнаружении ошибочного значения.
Существует три варианта сообщений, отличающихся по поведению:
- Останов;
- Предупреждение;
- Сообщение.
Останов является сообщением об ошибке и позволяет произвести только 2 действия: отменить ввод и повторить ввод. В случае отмены новое значение будет изменено на предыдущее. Повтор ввода дает возможность скорректировать новое значение.
Предупреждение более лояльно в сравнении с остановом, так как позволяет оставлять значение, не соответствующее условиям проверки, после подтверждения ввода пользователем.
Сообщение выводить ошибку в виде простой информации и дает возможность отменить последнее действие.
Заголовок и сообщение заполняются по Вашему желанию.
Пример вывода одной и той же ошибки, но под разными видами:
Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы мы могли развивать его дальше.
У Вас недостаточно прав для комментирования.
В MS Excel есть ряд очень полезных инструментов для удивительно простого создания по-настоящему сложных форм сбора информации. Однако, вот незадача — чаще всего камнем преткновения во взаимодействии с ними служат не возможности табличного редактора, а человеческая «косорукость». Пользователи стирают формулы из ячеек, вносят некорыстные данные, в общем, портят плоды наших трудов.
К счастью они делают это не со зла, и все что нужно нам — разработчикам, снабдить их подсказками и уже готовыми заранее ответами. Как это сделать, я расскажу в этой статье.
Вот и моя демонстрационная excel-таблица. Как её заполнять?
Подсказки в MS Excel
Первый способ вставки подсказки
Первым делом разберемся c подсказками. Взгляните на мою табличку. Вроде бы все просто, однако даже при такой простоте можно нагородить солидный огород. К примеру, поле «номер документ» — это №1, 1, или 22.03-1?
Самый проcтой способ вставить примечание в лист MS Excel
Самое простое, это щелкнуть по нужной ячейке правой кнопкой мыши и выбрать пункт «Вставить примечание«. В появившемся поле достаточно написать требуемый текст, и если пользователь поднесет курсор мыши к этой ячейке, текст немедленно появится во всплывающей подсказке.
Примечания вставлено
Обратите внимание: ячейка с примечанием помечена особым значком — маленьким красным треугольником в правом верхнем углу. Сам же текст примечания может быть отформатирован как любой другой — вы можете сделать его жирным или курсивным, чтобы подчеркнуть особо важные моменты своего послания.
Удалить примечания можно только из контекстного меню правой кнопки мыши
Обратите внимание: нажатие кнопки «Delete» в ячейке не удалит примечание. Избавиться от него (или изменить его текст) можно повторно щелкнув в ячейке правой кнопкой мыши и выбрав пункт «Удалить примечание» или «Изменить примечание».
Второй способ вставки подсказки
Ещё один способ ввести подсказку интересен нам только с точки зрения того, о чем пойдет разговор дальше (фильтрации ввода), тем не менее знать о нем полезно.
Примечания в Excel с помощью проверки данных
Поставьте курсор мыши в выбранную ячейку, на панели «Данные» в группе «Работа с данным» откройте инструмент «Проверка данных«, и заполните поля «заголовок» и «текст сообщения» на вкладке «Сообщение для ввода«. Нажмите «Ок».
Теперь, при щелчке на ячейке с подсказкой (обратите внимание — отмеченная таким способом ячейка не помечается красным треугольником, и выглядит так же как любая другая) также будет выведен его текст в желтом прямоугольнике. Удалить и изменить примечание введенное через «Проверку данных» с помощью правой кнопки мыши, нельзя.
Проверка по числу введенных символов
Подсказки — это хорошо, но что делать с самыми «прогрессивными» пользователями, которые подсказок не читают? Остается одно — бить по рукам… то есть использовать фильтрацию ввода, я хотел сказать.
Снова открываем инструмент «Проверка данных«, переходим на вкладку «Параметры» и смотрим на наши возможности по ограничению возможностей пользователя.
Проверка по числу введенных символов в MS Excel
Первое, что может оказаться полезным, это проверка по длине введенного текста. Выбираем пункт «Длина текста» и указываем любой диапазон ограничений. К примеру, я хочу чтобы текст в поле «Сообщение» был как можно более кратким, но в то же время ячейка не могла оставаться пустой. Значения от 3-х до 25 введенных символов, этого вполне хватит, чтоб вписать что-то вроде «Напоминание об оплате» (21 символ), а при попытке ввести более длинный текст, MS Excel выдаст окно-предупреждение и не даст завершить ввод.
Слишком длинный текст! Excel стоит на страже и не пропустит такой очевидной ошибки
Проверка по числу
Ещё один хороший способ фильтрации который пригодится без сомнения: фильтрация по числу. Установите фильтр подобный указанному на рисунке и навсегда избавьтесь от проблем с тем, что в поле цена появляются буквы, пробелы и лишние символы.
Проверка по числу в Excel
Фильтрация на ввод чисел работает ничуть не хуже
Выбор из имеющегося списка значений
Самая мощная и интересная проверка ввода в MS Excel — выборка из выпадающего списка. Она подойдет не для всех типов ячеек, но там где нужна точность, а диапазон значений не слишком велик, выборка по списку это то что надо.
А теперь, сделаем проверку по выпадающему списку в MS Excel. Данные введем вручную, через точку с запятой.
Выбираем в «Проверке данных» вкладку «Параметры«, и указываем «Тип данных» → «Список». Ввести «предустановленные» значения можно двумя способами:
- Выбрать диапазон данных с помощью кнопки «Диапазон данных».
- Вписать значения выпадающего списка вручную, через точку с запятой.
…или выберем из диапазона
Второй способ более интересен, так как данные «спрятаны» от пользователя, зато набить их больше десятка подряд — проблематично. Первый способ позволяет без проблем задать намного больший список для выбора данных, однако прежде придется этот список разместить где-то в документе (каждое значение на отдельной строке), например на отдельном «служебном» листе в той же книге MS Excel.
Выбор из списка на листе MS Excel. Других данных ввести не удастся.
Вот и готово — теперь заполнить ячейку можно лишь теми значениями, что мы указали в списке. При попытке ввести данные вручную, MS Excel выдаст нам уже знакомую ошибку.
Кстати, можно изменить и её текст — для этого перейдите на вкладку «Сообщение для вывода» в «Проверке данных», как мы уже делали при «втором способе» вставке подсказок, измените текст на требуемый.
Примечания в Excel — удобная штука. Только, чтобы отобразить примечание, нужно навести на его ячейку указатель мыши. А как сделать подсказку, которая будет всегда появляться при выборе ячейки — неважно, мышкой или стрелками?
Такая необходимость может возникнуть, например, при заполнении больших таблиц — чтобы не потеряться на просторах данных, можно включить в подсказку заголовки соответствующей строки и столбца. Или блок ячеек используется в качестве исходных данных для документа — и нужно дать необходимые пояснения для правильного заполнения.
Такую возможность даёт инструмент Excel «Проверка данных«.
Ставим курсор на нужную ячейку. Открываем окно «Проверка вводимых значений«. В Excel 2003 путь к нему такой: в строке меню ->Данные -> Проверка. В Excel 2007 — на ленте вкладка «Данные» -> пункт «Проверка»
Так как задачи действительно проверить вводимые значения у нас нет, сразу переходим на вкладку «Сообщение для ввода«. Заголовком можно пренебречь, заполнить только раздел «Сообщение«. Там напишите всё, что должно отображаться в подсказке. Обязательно проверьте, чтобы стояла галочка «Отображать подсказку, если ячейка является текущей». Написáли? Жмём ОК и радуемся!
Неактивная подсказка внешне не заметна. А при выборе ячейки с подсказкой, рядом появляется симпатичное окошечко с текстом пояснения.
Если подсказки содержат, к примеру, данные из заголовков строк и/или столбцов таблицы и их нужно часто менять, можно написать несложный макрос, который будет это делать за Вас.
На чтение 10 мин. Просмотров 38.6k.
В Excel VBA вы можете использовать функцию MsgBox для отображения окна сообщения (как показано ниже):
MsgBox — это не что иное, как диалоговое окно, которое вы можете использовать для информирования своих пользователей, показывая пользовательское сообщение или получая некоторые основные входные данные (такие как Да / Нет или OK / Отмена).
Пока отображается диалоговое окно MsgBox, ваш код VBA останавливается. Вам нужно нажать любую из кнопок в MsgBox, чтобы запустить оставшийся код VBA.
Примечание: в этом уроке я буду использовать слова «окно сообщения» и MsgBox взаимозаменяемо. При работе с Excel VBA вам всегда нужно использовать MsgBox.
Содержание
- Анатомия VBA MsgBox в Excel
- Синтаксис функции VBA MsgBox
- Константы кнопки Excel VBA MsgBox (примеры)
- Константы значков Excel VBA MsgBox (примеры)
- Настройка заголовка и приглашения в MsgBox
- Присвоение значения MsgBox переменной
Анатомия VBA MsgBox в Excel
Окно сообщения состоит из следующих частей:
- Title — заголовок: обычно используется для отображения содержания окна сообщения. Если вы ничего не указали, отображается имя приложения, в данном случае Microsoft Excel.
- Prompt — подсказка: это сообщение, которое вы хотите отобразить. Вы можете использовать это пространство, чтобы написать пару строк или даже отобразить таблицы / данные здесь.
- Button(s) — кнопка(-и): хотя кнопка «ОК» является кнопкой по умолчанию, ее можно настроить таким образом, чтобы отображать такие кнопки, как «Да / Нет»; «Да / Нет / Отмена», «Повторить» / «Пропустить» и т.д.
- Close Icon — значок закрытия: Вы можете закрыть окно сообщения, нажав на значок закрытия.
Синтаксис функции VBA MsgBox
Как я уже упоминал, MsgBox является функцией и имеет синтаксис, аналогичный другим функциям VBA.
MsgBox( prompt [, buttons ] [, title ] [, helpfile, context ] )
- prompt — это обязательный аргумент. Он отображает сообщение, которое вы видите в MsgBox. В нашем примере текст «Это образец MsgBox» — это «подсказка». В приглашении можно использовать до 1024 символов, а также использовать его для отображения значений переменных. Если вы хотите показать подсказку, состоящую из нескольких строк, вы можете сделать это также (подробнее об этом позже в этом руководстве).
- [buttons ] — определяет, какие кнопки и значки отображаются в MsgBox. Например, если я использую vbOkOnly, на нем будет отображаться только кнопка OK, а если я использую vbOKCancel, на нем будут отображаться кнопки OK и Отмена. Я расскажу о различных видах кнопок позже в этом уроке.
- [title] — здесь вы можете указать заголовок в диалоговом окне сообщения. Отображается в строке заголовка MsgBox. Если вы ничего не укажете, будет показано название приложения.
- [helpfile] — вы можете указать файл справки, к которому можно получить доступ, когда пользователь нажимает кнопку «Справка». Кнопка справки появится только тогда, когда вы используете для нее код кнопки. Если вы используете файл справки, вам также необходимо указать аргумент context.
- [context] — это числовое выражение, которое является номером контекста справки, назначенным соответствующему разделу справки.
Если вы новичок в концепции Msgbox, не стесняйтесь игнорировать аргументы [helpfile] и [context]. Они редко используются.
Примечание. Все аргументы в квадратных скобках являются необязательными. Только аргумент «подсказка» является обязательным.
Константы кнопки Excel VBA MsgBox (примеры)
В этом разделе я расскажу о различных типах кнопок, которые вы можете использовать с VBA MsgBox.
Прежде чем я покажу вам код VBA для него и то, как выглядит MsgBox, вот таблица, в которой перечислены все различные константы кнопок, которые вы можете использовать.
Константа кнопки | Описание |
vbOKOnly | Показывает только кнопку ОК |
vbOKCancel | Показывает кнопки ОК и Отмена |
vbAbortRetryIgnore | Показывает кнопки «Прервать», «Повторить» и «Игнорировать» |
vbYesNo | Показывает кнопки Да и Нет |
vbYesNoCancel | Показывает кнопки Да, Нет и Отмена |
vbRetryCancel | Показывает кнопки «Повторить» и «Отменить» |
vbMsgBoxHelpButton | Показывает кнопку справки. Чтобы это работало, вам нужно использовать аргументы справки и контекста в функции MsgBox |
vbDefaultButton1 | Делает первую кнопку по умолчанию. Вы можете изменить номер, чтобы изменить кнопку по умолчанию. Например, vbDefaultButton2 делает вторую кнопку по умолчанию |
Примечание. Просматривая примеры создания различных кнопок, вы можете задаться вопросом, какой смысл использовать эти кнопки, если они не влияют на код.
Влияют! В зависимости от выбора вы можете кодировать то, что вы хотите, чтобы код делал. Например, если вы выберете «ОК», код должен продолжиться, а если вы нажмете «Отмена», код должен прекратиться. Это можно сделать с помощью переменных и присвоения значения окна сообщения переменной. Мы рассмотрим это в последующих разделах этого урока.
Теперь давайте рассмотрим несколько примеров того, как различные кнопки могут отображаться в MsgBox и как они выглядят.
Кнопки MsgBox — vbOKOnly (по умолчанию)
Если вы используете только приглашение и не указываете ни один из аргументов, вы получите окно сообщения по умолчанию, как показано ниже:
Ниже приведен код, который выдаст это окно сообщения:
Sub DefaultMsgBox() MsgBox "This is a sample box" End Sub
Обратите внимание, что текстовая строка должна быть в двойных кавычках.
Вы также можете использовать постоянную кнопку vbOKOnly, но даже если вы ничего не указали, она используется по умолчанию.
Кнопки MsgBox — ОК и Отмена
Если вы хотите показать только ОК и кнопку Отмена, вам нужно использовать константу vbOKCancel
Sub MsgBoxOKCancel() MsgBox "Want to Continue?", vbOKCancel End Sub
Кнопки MsgBox — Отмена, Повтор и Игнорирование
Вы можете использовать константу vbAbortRetryIgnore для отображения кнопок «Отмена», «Повторить» и «Игнорировать».
Sub MsgBoxAbortRetryIgnore() MsgBox "What do you want to do?", vbAbortRetryIgnore End Sub
Кнопки MsgBox — Да и Нет
Вы можете использовать константу vbYesNo для отображения кнопок Да и Нет.
Sub MsgBoxYesNo() MsgBox "Should we stop?", vbYesNo End Sub
Кнопки MsgBox — Да, Нет и Отмена
Вы можете использовать константу vbYesNoCancel для отображения кнопок «Да», «Нет» и «Отмена».
Sub MsgBoxYesNoCancel() MsgBox "Should we stop?", vbYesNoCancel End Sub
Кнопки MsgBox — повторить попытку и отменить
Вы можете использовать константу vbRetryCancel для отображения кнопок «Повторить» и «Отмена».
Sub MsgBoxRetryCancel() MsgBox "What do you want to do next?", vbRetryCancel End Sub
Кнопки MsgBox — Кнопка справки
Вы можете использовать константу vbMsgBoxHelpButton для отображения кнопки справки. Вы можете использовать его с другими константами кнопок.
Sub MsgBoxRetryHelp() MsgBox "What do you want to do next?", vbRetryCancel + vbMsgBoxHelpButton End Sub
Обратите внимание, что в этом коде мы объединили две разные константы кнопки (vbRetryCancel + vbMsgBoxHelpButton). Первая часть показывает кнопки «Повторить» и «Отмена», а вторая часть показывает кнопку «Справка».
MsgBox Buttons — Настройка кнопки по умолчанию
Вы можете использовать константу vbDefaultButton1 для установки первой кнопки по умолчанию. Это означает, что кнопка уже выбрана, и если вы нажмете Enter, она выполнит эту кнопку.
Ниже приведен код, который установит в качестве кнопки по умолчанию вторую кнопку (кнопка «Нет»).
Sub MsgBoxOKCancel() MsgBox "What do you want to do next?", vbYesNoCancel + vbDefaultButton2 End Sub
В большинстве случаев крайняя левая кнопка является кнопкой по умолчанию. Вы можете выбрать другие кнопки, используя vbDefaultButton2, vbDefaultButton3 и vbDefaultButton4.
Константы значков Excel VBA MsgBox (примеры)
Помимо кнопок, вы также можете настроить значки, отображаемые в диалоговом окне MsgBox. Например, у вас может быть красный критический значок или синий информационный значок.
Ниже приведена таблица со списком кода, который будет отображать соответствующий значок.
Константа значка | Описание |
vbCritical | Показывает значок критического сообщения |
vbQuestion | Показывает значок вопроса |
vbExclamation | Показывает значок предупреждения |
vbInformation | Показывает значок информации |
Иконки MsgBox — Критические
Если вы хотите показать критический значок в своем MsgBox, используйте константу vbCritical. Вы можете использовать ее вместе с другими константами кнопки (поставив знак + между кодами).
Например, ниже приведен код, который будет показывать кнопку ОК по умолчанию с критическим значком.
Sub MsgBoxCriticalIcon() MsgBox "This is a sample box", vbCritical End Sub
Если вы хотите показать критический значок с кнопками Да и Нет, используйте следующий код:
Sub MsgBoxCriticalIcon() MsgBox "This is a sample box", vbYesNo + vbCritical End Sub
Иконки MsgBox — Вопрос
Если вы хотите показать иконку вопроса в своем MsgBox, используйте константу vbQuestion.
Sub MsgBoxQuestionIcon() MsgBox "This is a sample box", vbYesNo + vbQuestion End Sub
Иконки MsgBox — Восклицательный знак
Если вы хотите показать восклицательный значок в вашем MsgBox, используйте константу vbExclamation.
Sub MsgBoxExclamationIcon() MsgBox "This is a sample box", vbYesNo + vbExclamation End Sub
Иконки MsgBox — Информация
Если вы хотите отобразить информационный значок в вашем MsgBox, используйте константу vbInformation.
Sub MsgBoxInformationIcon() MsgBox "This is a sample box", vbYesNo + vbInformation End Sub
Настройка заголовка и приглашения в MsgBox
При использовании MsgBox вы можете настроить заголовок и сообщения подсказок.
До сих пор в примерах, которые мы видели, использовался Microsoft Excel в качестве заголовка. Если вы не указали аргумент title, MsgBox автоматически использует заголовок приложения (в данном случае это был Microsoft Excel).
Вы можете настроить заголовок, указав его в коде, как показано ниже:
Sub MsgBoxInformationIcon() MsgBox "Do you want to continue?", vbYesNo + vbQuestion, "Step 1 of 3" End Sub
Точно так же вы также можете настроить сообщение подсказки.
Вы также можете добавить разрывы строк в сообщении подсказки.
В приведенном ниже коде я добавил разрыв строки, используя «vbNewLine».
Sub MsgBoxInformationIcon() MsgBox "Do you want to continue?" & vbNewLine & "Click Yes to Continue", vbYesNo + vbQuestion, "Step 1 of 3" End Sub
Вы также можете использовать символ возврата каретки — Chr (13) или перевод строки — Chr (10), чтобы вставить новую строку в сообщение с подсказкой.
Обратите внимание, что вы можете добавить новую строку только к сообщению, а не к заголовку.
Присвоение значения MsgBox переменной
До сих пор мы видели примеры, где мы создавали окна сообщений и настраивали кнопки, значки, заголовок и приглашение.
Однако нажатие кнопки ничего не сделало.
С помощью функции MsgBox в Excel вы можете решить, что вы хотите делать, когда пользователь нажимает определенную кнопку. И это возможно, поскольку каждая кнопка имеет значение, связанное с ней.
Поэтому, если я нажимаю кнопку «Да», функция MsgBox возвращает значение (6 или константа vbYes), которое я могу использовать в своем коде. Аналогично, если пользователь выбирает кнопку «Нет», он возвращает другое значение ((7 или константа vbNo)), которое я могу использовать в коде.
Ниже приведена таблица, которая показывает точные значения и константу, возвращаемую функцией MsgBox. Вам не нужно запоминать их, просто помните об этом, и вы можете использовать константы, которые проще в использовании.
При нажатии кнопки | Константа | Значение |
Ok | vbOk | 1 |
Cancel | vbCancel | 2 |
Abort | vbAbort | 3 |
Retry | vbRetry | 4 |
Ignore | vbIgnore | 5 |
Yes | vbYes | 6 |
No | vbNo | 7 |
Теперь давайте посмотрим, как мы можем контролировать макрос-код VBA в зависимости от того, на какую кнопку нажимает пользователь.
В приведенном ниже коде, если пользователь нажимает кнопку «Да», отображается сообщение «Вы нажали кнопку «Да», а если пользователь нажимает кнопку «Нет», отображается сообщение «Вы нажали кнопку «Нет»».
Sub MsgBoxInformationIcon() Result = MsgBox("Do you want to continue?", vbYesNo + vbQuestion) If Result = vbYes Then MsgBox "You clicked Yes" Else: MsgBox "You clicked No" End If End Sub
В приведенном выше коде я присвоил значение функции MsgBox переменной Result. Когда вы нажимаете кнопку «Да», переменная Result получает константу vbYes (или число 6), а когда вы нажимаете «Нет», переменная Result получает константу vbNo (или число 7).
Затем я использовал конструкцию If Then Else, чтобы проверить, содержит ли переменная Result значение vbYes. Если это так, отображается запрос «Вы нажали Да», в противном случае — «Вы нажали Нет».
Вы можете использовать ту же концепцию для запуска кода, если пользователь нажимает Да, и выход из подпрограммы, когда он нажимает Нет.
Примечание. Когда вы присваиваете выход MsgBox переменной, вы должны поместить аргументы функции MsgBox в круглые скобки. Например, в строке Result = MsgBox («Хотите продолжить?», VbYesNo + vbQuestion) вы можете видеть, что аргументы находятся в скобках.
Если вы хотите в дальнейшем углубиться в функцию Message Box, вот официальный документ по ней.
Хитрости »
19 Октябрь 2014 101575 просмотров
Работа с диалогами
Несомненно каждый разработчик делает работу простого пользователя хоть немного, но проще. И конечно, порой просто необходима обратная связь от пользователя при выполнении некоторых программ. О ней и хочу сегодня рассказать.
Что я имею ввиду: есть ситуации, когда необходимо:
- сообщить пользователю о выполнении кода;
- получить от пользователя подтверждение на выполнение того или иного действия;
- запросить какие-то данные(число, текст для поиска, диапазон поиска и т.п.).
Простейшие запросы и подтверждения можно сделать при помощи уже встроенных диалоговых окон.
Из основных можно выделить три типа:
MsgBox — окно информирования пользователя с возможностью запроса действия (Да, Нет, Отмена и т.п.);
InputBox — окно запроса текстовой информации от пользователя (текст для поиска, дата, число и т.п.);
Application.InputBox — чуть более расширенная версия InputBox с возможностью указания не только текста и чисел, но и выделения диапазона ячеек (например для указания ячеек, в которых осуществлять поиск значения или которые необходимо закрасить).
- Информационный диалог MsgBox
- MsgBox, автоматически закрываемый по истечении указанного времени
- Диалог ввода информации пользователем InputBox
- Диалог выбора диапазона Application.InputBox
Самый простой тип. Используется для информирования пользователя. Как правило применяется по окончании выполнения кода:
MsgBox Promt, [Buttons], [Title], [HelpFile], [Context]
Обязательным к указанию является только первый параметр —
Promt
, в котором указывается непосредственно сообщение для вывода:
MsgBox "Обработка завершена"
Все остальные параметры указывать не обязательно, но их использование несколько расширяет возможности данного диалогового окна.
Buttons — указывается тип выводимых кнопок и стиль окна. По умолчанию применяется vbOKOnly — одна только кнопка Ок:
'показываем окно с кнопкой по умолчанию и типом важного сообщения MsgBox "Обработка завершена", vbCritical
Доступны значения:
Значение | Числовая константа | Описание |
---|---|---|
vbOKOnly | 0 | Отображает только кнопку OK |
vbOKCancel | 1 | Отображает кнопки ОК и Отмена |
vbAbortRetryIgnore | 2 | Отображает кнопки Прервать, Повтор и Пропустить |
vbYesNoCancel | 3 | Отображает кнопки Да, Нет и Отмена |
vbYesNo | 4 | Отображает кнопки Да и Нет |
vbRetryCancel | 5 | Отображает кнопки Повтор и Отмена |
vbCritical | 16 | Отображает значок важного сообщения |
vbQuestion | 32 | Отображает значок важного запроса |
vbExclamation | 48 | Отображает значок предупреждающего сообщения |
vbInformation | 64 | Отображает значок информационного сообщения |
vbDefaultButton1 | 0 | По умолчанию выделена первая кнопка |
vbDefaultButton2 | 256 | По умолчанию выделена вторая кнопка |
vbDefaultButton3 | 512 | По умолчанию выделена третья кнопка |
vbDefaultButton4 | 768 | По умолчанию выделена четвертая кнопка |
vbApplicationModal | 4098 | Все приложения приостанавливают свою работу до момента, пока пользователь ответит на запрос в окне сообщения (работает не во всех случаях) |
vbMsgBoxHelpButton | 16384 | Показываются кнопки Ок и Help |
Константы Buttons могут быть объединены между собой. Ниже приведен код, который показывает диалоговое окно с возможностью выбора одного из трех вариантов — Прервать, Повтор, Пропустить:
'--------------------------------------------------------------------------------------- ' Procedure : test ' DateTime : 19.10.2014 19:24 ' Author : The_Prist(Щербаков Дмитрий) ' WebMoney - R298726502453; Яндекс.Деньги - 41001332272872 ' http://www.excel-vba.ru ' Purpose : Процедура показывает диалоговое окно с возможностью выбора одного из трех вариантов: ' Прервать, Повтор, Пропустить ' По умолчанию выделена кнопка Прервать, т.к. иное не указано '--------------------------------------------------------------------------------------- Sub test() Dim lRetVal As Long 'для получения выбранного значения Retry_: lRetVal = MsgBox("Обработка завершена", vbAbortRetryIgnore + vbQuestion) Select Case lRetVal Case vbAbort '3/Прервать/Abort Exit Sub 'выходим из процедуры Case vbRetry '4/Повтор/Retry GoTo Retry_ 'переход на метку Retry_ Case vbIgnore '5/Пропустить/Ignore End Select End Sub
Следующий код показывает то же окно, но по умолчанию выделяет кнопку Пропустить
'--------------------------------------------------------------------------------------- ' Procedure : test ' DateTime : 19.10.2014 19:24 ' Author : The_Prist(Щербаков Дмитрий) ' WebMoney - R298726502453; Яндекс.Деньги - 41001332272872 ' http://www.excel-vba.ru ' Purpose : Процедура показывает диалоговое окно с возможностью выбора одного из трех вариантов: ' Прервать, Повтор, Пропустить ' По умолчанию выделена кнопка Пропустить(3-я по счету - значит vbDefaultButton3) '--------------------------------------------------------------------------------------- Sub test() Dim lRetVal As Long 'для получения выбранного значения Retry_: lRetVal = MsgBox("Обработка завершена", vbAbortRetryIgnore + vbQuestion + vbDefaultButton3) Select Case lRetVal Case vbAbort '3/Прервать/Abort Exit Sub 'выходим из процедуры Case vbRetry '4/Повтор/Retry GoTo Retry_ 'переход на метку Retry_ Case vbIgnore '5/Пропустить/Ignore End Select End Sub
Вместо текстового представления констант можно применить их числовые значения:
Sub test() Dim lRetVal As Long 'для получения выбранного значения Retry_: lRetVal = MsgBox("Обработка завершена", 2 + 32 + 512) Select Case lRetVal Case 3 'vbAbort Exit Sub 'выходим из процедуры Case 4 'vbRetry GoTo Retry_ 'переход на метку Retry_ Case 5 'vbIgnore End Select End Sub
Нетрудно после этого предположить, что можно указать просто сумму данных чисел:
MsgBox "Обработка завершена", 546
Доступные константы значений возврата:
Константа | Значение | Нажатая кнопка |
---|---|---|
vboK | 1 | ОК |
vbCancel | 2 | Отмена |
vbAbort | 3 | Прервать |
vbRetry | 4 | Повтор |
vblgnore | 5 | Пропустить |
vbYes | 6 | Да |
vbNo | 7 | Нет |
Title — указывается текст заголовка окна. Например, можно указать либо что это ошибка, либо имя своего приложения:
MsgBox "Обработка завершена", vbOKOnly, "Мое приложение"
HelpFile — указывается имя файла-справки в формате HLP. Применяется, если параметр Buttons указан как vbMsgBoxHelpButton. Файл справки должен существовать.
Context — целое число. Указывается индекс страницы файла-справки, которую необходимо открыть. Указывается только если указан параметр HelpFile.
Небольшой практический пример применения простого диалогового окна MsgBox.
Цель процедуры(макроса): очистить все ячейки листа.
Согласитесь, что неплохо бы перед этим запросить у пользователя решение — он согласен с этим и это является обдуманным решением или случайностью?
'--------------------------------------------------------------------------------------- ' Procedure : ClearRange ' DateTime : 19.10.2014 20:06 ' Author : The_Prist(Щербаков Дмитрий) ' WebMoney - R298726502453; Яндекс.Деньги - 41001332272872 ' http://www.excel-vba.ru ' Purpose : '--------------------------------------------------------------------------------------- Sub ClearRange() Dim lRetVal As Long 'для получения выбранного значения lRetVal = MsgBox("Все данные выделенных ячеек будут удалены." & _ Chr(10) & "Действительно хотите продолжить?", _ vbYesNo + vbQuestion, "Запрос на выполнение") If lRetVal = vbNo Then Exit Sub 'выходим из процедуры без выполнения End If Selection.Clear End Sub
Так же на странице Полезные программы для Excel и VBA можно найти программу MsgBox Generator, которая просто и наглядно формирует коды показа MsgBox.
Диалог MsgBox удобен, если надо проинформировать пользователя о каких-то событиях или предоставить ему выбор Да или Нет. Но в тоже время есть один недостаток: этот диалог не закроется, пока пользователь не нажмет хоть какую-то кнопку. Но бывает необходимо просто проинформировать и закрыть окно независимо от реакции пользователя. Показали окно, подождали секунд 5-7 и даже если пользователь ничего не нажал — закрыли окно и продолжили выполнение кода. Стандартно такой опции в MsgBox нет. Однако можно использовать функции API(это встроенные в ОС Windows функции, которые можно вызывать из любого языка программирования).
Код такого диалога:
Declare Function MessageBoxTimeOut Lib "User32" Alias "MessageBoxTimeoutA" _ (ByVal hwnd As Long, ByVal lpText As String, _ ByVal lpCaption As String, ByVal uType As VbMsgBoxStyle, _ ByVal wLanguageId As Long, ByVal dwMilliseconds As Long) As Long Sub AutoCloseMsgBox() Const lSeconds As Long = 5 MessageBoxTimeOut 0, "Отчет сформирован. Это окно закроется автоматически через 5 секунд", "www.excel-vba.ru", _ vbInformation + vbOKOnly, 0&, lSeconds * 1000 End Sub
Основную роль здесь играет строка:
Declare Function MessageBoxTimeOut Lib "User32" Alias "MessageBoxTimeoutA" _ (ByVal hwnd As Long, ByVal lpText As String, _ ByVal lpCaption As String, ByVal uType As VbMsgBoxStyle, _ ByVal wLanguageId As Long, ByVal dwMilliseconds As Long) As Long
это и есть сама функция, создающая MsgBox.
Главное: эта строка должна располагаться в самом верху стандартного модуля(в области объявлений, перед всеми процедурами и функциями).
Так же следует помнить, что это функция API и в некоторых версиях Excel именно в таком виде может не работать — вся строка будет подсвечена красным. Если проявился такой эффект, то можно просто добавить ключевое слово PtrSafe, отвечающее за совместимость функции с 64-битными ОС:
Declare PtrSafe Function MessageBoxTimeOut Lib "User32" Alias "MessageBoxTimeoutA" _ (ByVal hwnd As Long, ByVal lpText As String, _ ByVal lpCaption As String, ByVal uType As VbMsgBoxStyle, _ ByVal wLanguageId As Long, ByVal dwMilliseconds As Long) As Long
Помимо очевидного текста сообщения и заголовка, который можно заменить на свой, главное внимание уделим константе lSeconds. Она отвечает за количество секунд показа сообщения. В примере выше сообщение будет показано на 5 секунд, после чего закроется само собой, если ранее не была нажата кнопка Ок.
Если необходимо показать сообщение на 10 секунд, то надо лишь заменить 5 на 10:
Const lSeconds As Long = 10
Параметр uType работает точно так же, как параметр Buttons у стандартного MsgBox. Т.е. можно комбинировать различные виды кнопок и использовать этот MsgBox как стандартный, но при этом закрыть его автоматически, если пользователь случайно «уснул» или ему лень/некогда что-то нажимать:
Sub AutoCloseMsgBox() Const lSeconds As Long = 10 Dim retval retval = MessageBoxTimeOut(0, "Файлы обработаны. Вывести список?" & vbNewLine & _ "Если действие не будет выбрано окно закроется через 10 секунд", "www.excel-vba.ru", _ vbInformation + vbYesNo, 0&, lSeconds * 1000) If retval = 6 Then 'была нажата кнопка Да(Yes) 'выводим отчет Else 'была нажата кнопка Нет(No) или окно закрылось само 'другое действие End If End Sub
InputBox
позволяет запросить от пользователя любую текстовую информацию.
InputBox Promt, [Title], [DefaultValue], [XPos], [YPos], [HelpFile], [Context]
Так же как и с MsgBox обязательным аргументом для указания является только
Promt
— это тот текст, который будет расположен непосредственно на самой форме диалога. Как правило это пояснение, что должен ввести пользователь.
Dim vRetVal 'для получения выбранного значения vRetVal = InputBox("Укажите значение для поиска:", "Запрос данных", "") If vRetVal = "" Then Exit Sub 'завершаем процедуру, если строка пуста
Title — текст, отображаемый в заголовке окна. В приведенном выше примере это «Запрос данных».
DefaultValue — значение, которое будет показано в поле ввода до указания значения пользователем. Как правило оно указывается в случаях, когда требуемое значение изменяется редко по запросу пользователя, но возможность такую оставить все же требуется.
Пример: необходимо по нажатию кнопки удалять всегда столбец 5. Но иногда столбец в отчете смещается и требуется запрашивать у пользователя реальный номер столбца:
Sub DelCols() Dim vRetVal 'для получения выбранного значения vRetVal = InputBox("Укажите номер столбца для удаления(целое число):", "Запрос данных", 5) 'используем Val для преобразования текста vRetVal в число 'Val() преобразует число как текст в число. 'Если указан текст(например "третий") - он будет преобразован в 0 vRetVal = Val(vRetVal) If Val(vRetVal) = 0 Then MsgBox "Номер столбца должен быть целым числом больше нуля!", vbCritical, "DelCols" Exit Sub End If Columns(vRetVal).Delete End Sub
Важно знать: InputBox всегда возвращает только текст. Даже если указать — 5 — он вернет «5». В некоторых случаях это может привести к ошибке типов данных, поэтому я привел выше один из примеров преобразования типов данных к нужному.
Так же по прошествии какого-то времени появится вопрос, как отследить нажатие кнопки Отмена. Ведь ориентир на vRetVal = «» не всегда верен, иногда надо принять пустое значение(в случаях, скажем, замены значений) и отследить именно нажатие Отмена. Сделать это можно так:
vRetVal = InputBox("Укажите номер столбца для удаления(целое число):", "Запрос данных", "") If StrPtr(vRetVal) = 0 Then MsgBox "Нажата кнопка Отмена. Процедура прервана", vbCritical, "DelCols" Exit Sub End If
Больше всего вопросов здесь явно вызовет StrPtr. Эта специальная функция VBA, которая указывает, что переданы некие строковые данные. Если никаких данных не передавалось(а в случае с нажатием кнопки Отмена так и есть) указатель вернет 0. Если какие-то данные были переданы или нажата кнопка Ок(автоматом будет передана строка нулевой длины) — указатель StrPtr вернет значение отличное от нуля.
XPos — положение окна InputBox в твипах по горизонтали относительно левого края экрана. Следует учитывать, что именно относительно экрана, а не окна Excel.
YPos — положение окна InputBox в твипах по вертикали относительно верхнего края экрана.
HelpFile — указывается имя файла-справки в формате HLP. В отличие от MsgBox указание файла допускается при любых значениях. При этом к уже имеющимся в InputBox кнопкам добавляется еще одна — Help, которая и отвечает за вызов справки.
Context — целое число. Указывается индекс страницы файла-справки, которую необходимо открыть при нажатии кнопки Help. Указывается только если указан параметр HelpFile.
В дополнение приведу классический пример применения InputBox — выполнение процедуры только после введения пароля:
Sub ClearAllCells() Dim vRetVal vRetVal = InputBox("Введите пароль:", "Авторизация", "") If StrPtr(vRetVal) = 0 Then 'Нажата кнопка Отмена Exit Sub End If 'если пароль неверный - завершаем процедуру без выполнения действий If vRetVal <> "1234" Then MsgBox "Введенный пароль неверный", vbCritical, "ClearAllCells" Exit Sub End If 'будет выполнено только если введен правильный пароль - 1234 'полная очистка всех ячеек активного листа ActiveSheet.Cells.Clear End Sub
А вот еще один пример применения — запрос имени пользователя и запись его в лист LOG, чтобы можно было отследить кто и когда открывал файл. При этом если пользователь нажал Отмена, то книга закроется, а если не укажет имя пользователя — появится сообщение и заново запрос. И так до тех пор, пока имя пользователя не будет введено или не будет нажата кнопка Отмена:
Private Sub Workbook_Open() 'ThisWorkbook - Обращение к книге с кодом 'Но из модуля самой книги можно обращаться и проще - Me ThisWorkbook.Visible = False Dim user As String, lastrow As Long 'цикл, пока не будут указаны данные пользователя Do While user = "" user = InputBox("Введите имя пользователя:", "Авторизация", "") If StrPtr(user) = 0 Then MsgBox "Приложение будет закрыто", vbCritical, "Авторизация" ThisWorkbook.Close Exit Sub End If If user = "" Then MsgBox "Не указано имя пользователя!", vbCritical, "Авторизация" End If Loop With ThisWorkbook.Worksheets("LOG") 'получаем последнюю заполненную ячейку на листе "LOG" lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row 'записываем имя пользователя .Cells(lastrow + 1, 1) = user 'записываем время входа .Cells(lastrow + 1, 2) = Now End With End Sub
Что важно: этот код записывается в модуль ЭтаКнига(ThisWorkbook) и тогда при любом открытии книги будет появляться запрос на имя пользователя.
Так же некоторые примеры применения InputBox можно найти в статьях на сайте. Например:
Как удалить строки по условию?
Как массово изменить гиперссылки?
ДИАЛОГ ВВОДА ИНФОРМАЦИИ ПОЛЬЗОВАТЕЛЕМ — APPLICATION.INPUTBOX
В общем-то данный диалог мало отличается от обычного InputBox, за исключением типов возвращаемых данных. У данного диалога намного богаче функционал определения типов данных.
InputBox Promt, [Title], [DefaultValue], [Left], [Top], [HelpFile], [HelpContextID], [Type]
почти все параметры аналогичны таким же параметрам в InputBox.
Promt — текст, отображаемый на самой форме. Иначе говоря — сама суть показа диалога.
Title — текст, отображаемый в заголовке окна. В приведенном выше примере это «Запрос данных».
DefaultValue — значение, которое будет показано в поле ввода до указания значения пользователем.
Left — положение окна InputBox в поинтах по горизонтали относительно левого края экрана. В отличие от простого InputBox положение определяется на основании расположения самого окна Excel, а не экрана.
Top — положение окна InputBox в твипах по вертикали относительно верхнего края экрана.
HelpFile — указывается имя файла-справки в формате HLP. В отличие от MsgBox указание файла допускается при любых значениях. При этом к уже имеющимся в InputBox кнопкам добавляется еще одна — Help, которая и отвечает за вызов справки. Сам вызов справки осуществляется путем нажатия на иконку со знаком вопроса в заголовке диалога.
HelpContextID — целое число. Указывается индекс страницы файла-справки, которую необходимо открыть при нажатии кнопки Help. Указывается только если указан параметр HelpFile.
Type — целое число. Указывается одно из предустановленных значений, указывающих диалогу Application.InputBox тип данных, которые предполагается получить от пользователя. Ниже приведен листинг кода, демонстрирующий запрос данных всех типов с описанием ограничений и нюансов.
Dim vRetVal 'для получения выбранного значения 'запрос формулы - Type:=0 'возвращает либо произвольный текст, указанный в поле или ссылку на указанную ячейку в стиле R1C1 vRetVal = Application.InputBox("Укажите формулу:", "Запрос данных", "", Type:=0) 'запрос числа - Type:=1 'возвращает число. Не даст ввести текст, выдав сообщение об ошибке vRetVal = Application.InputBox("Укажите любое число:", "Запрос данных", "", Type:=1) 'запрос текст - Type:=2 'возвращает указанный текст. При указании числа оно будет в виде текста: 1="1" vRetVal = Application.InputBox("Укажите любой текст:", "Запрос данных", "", Type:=2) 'запрос логического значения True или False - Type:=4 'значение указывает в текущей локализации офиса 'для русской это ИСТИНА или ЛОЖЬ 'так же можно указать универсальные числовые константы - 1 или 0. 1 - ИСТИНА; 0 - ЛОЖЬ 'Не даст ввести иные значения, выдав сообщение об ошибке 'возвращает указанное логическое значение в английской локализации vRetVal = Application.InputBox("Укажите ИСТИНА или ЛОЖЬ:", "Запрос данных", "", Type:=4) 'запрос диапазона - Type:=8 'возвращает ссылку на диапазон 'При получении такого значения обязательно следует использовать оператор Set 'В противном случае вернет значение массива(Array), содержащего значения указанных ячеек 'при указании через Set и нажатии Отмена будет ошибка VBA Set vRetVal = Application.InputBox("Укажите диапазон для очистки ячеек:", "Запрос данных", "", Type:=8) 'запрос значения ошибки #Н/Д - Type:=16 'всегда возвращает значение ошибки #Н/Д независимо от введенного значения vRetVal = Application.InputBox("Укажите диапазон для очистки ячеек:", "Запрос данных", "", Type:=16) 'запрос диапазона ячеек для создания массива - Type:=64 'возвращает массив ячеек с границами начала от 1(Option Base 1) 'если указать всего одну ячейку vRetVal будет содержать значение этой ячейки, а не массив vRetVal = Application.InputBox("Укажите диапазон для создания массива:", "Запрос данных", "", Type:=64)
Конечно, чаще всего используют Type:=8, т.к. это избавляет от необходимости рисования своих форм и прочих заморочек для запроса указания диапазона от пользователя. Еще раз обращаю внимание, что для Type:=8 необходим ключевой оператор присвоения Set, т.к. в результате необходимо получить именно диапазон(т.е. объект). Ниже приведена процедура, которая запрашивает диапазон для очистки и корректно обрабатывает ситуацию при нажатии кнопки Отмена(т.е. не показывает никаких ошибок пользователю, а просто не выполняется). Стандартно при нажатии Отмена процедура завершается с ошибкой VBA вида Type Mismatch, что не очень грамотно с точки зрения взаимодействия с пользователем — он не должен видеть внутренние ошибки:
'--------------------------------------------------------------------------------------- ' Procedure : ClearCells ' DateTime : 19.10.2014 22:53 ' Author : The_Prist(Щербаков Дмитрий) ' WebMoney - R298726502453; Яндекс.Деньги - 41001332272872 ' http://www.excel-vba.ru ' Purpose : ' Запрашиваем диапазон ячеек для очистки. ' По умолчанию заносится диапазон выделенных на момент запуска ячеек '--------------------------------------------------------------------------------------- Sub ClearCells() Dim vRetVal 'для получения выбранного значения On Error Resume Next Set vRetVal = Application.InputBox("Укажите диапазон для очистки ячеек:", "Запрос данных", Selection.Address, Type:=8) If vRetVal Is Nothing Then 'нажата кнопка Отмена - диапазон не выбран MsgBox "Отмена выполнения", vbCritical, "Нет данных" Exit Sub 'завершаем процедуру, т.к. ячейки не выбраны End If 'диапазон выбран - очищаем ячейки vRetVal.Clear End Sub
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Полезная информация в строке состояния
Кому-как, а мне лично строка состояния бывает нужна только в 2-3 случаях:
- после фильтрации в ней отображается количество оставшихся после отбора значений
- при выделении диапазона в ней отображается сумма, среднее и количество выделенных ячеек
- в случае тяжелых файлов в ней можно увидеть прогресс по пересчету формул в книге.
Не так уж и много для строки, которая занимает почти всю ширину экрана и висит на нем постоянно. Давайте попробуем расширить этот скромный список и прикрутить к ней еще несколько полезных функций
Общие принципы управления строкой состояния
Управление строкой состояния с помощью Visual Basic очень несложно. Чтобы вывести в нее свой текст, можно использовать простой макрос:
Sub MyStatus() Application.StatusBar = "Привет!" End Sub
После его запуска получим:
Чтобы восстановить исходное состояние строки статуса нужен будет такой же короткий «антимакрос»:
Sub MyStatus_Off() Application.StatusBar = False End Sub
В базовом варианте, как видите, все очень просто. Теперь давайте попробуем развить идею…
Адрес выделенного диапазона в строке состояния
В левом верхнем углу окна Excel в строке формул всегда можно увидеть адрес текущей ячейки. Но если выделен целый диапазон, то адреса выделения мы там, к сожалению, не увидим — отображается все та же одна единственная активная ячейка:
Для решения этой задачи можно использовать простой макрос, который будет выводить адрес выделенной области в строку состояния. Причем запускаться этот макрос должен автоматически, при любом изменении выделения на любом листе — для этого разместим его в обработчике события SelectionChange нашей книги.
Откройте редактор Visual Basic с помощью одноименной кнопки на вкладке Разработчик (Developer) или сочетания клавиш левый Alt+F11. Найдите в левом верхнем углу на панели Project свою книгу и откройте в ней двойным щелчком модуль ЭтаКнига (ThisWorkbook):
В открывшееся окно скопируйте и вставьте следующий код макроса:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.StatusBar = "Выделено: " & Selection.Address(0, 0) End Sub
Теперь при выделении любого диапазона (в том числе и не одного!), в строке состояния будет отображаться его адрес:
Чтобы адреса нескольких выделенных с Ctrl диапазонов не сливались, можно добавить небольшое улучшение — заменить с помощью функции Replace запятую на запятую с пробелом:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.StatusBar = "Выделено: " & Replace(Selection.Address(0, 0), ",", ", ") End Sub
Количество выделенных ячеек в строке состояния
При выделении любого диапазона в правой части строки состояния стандартно отображается количество непустых выделенных ячеек. Иногда же нужно знать количество выделенных. Эту задачу также можно решить с помощью простого макроса обработки события книги SelectionChange, как в предыдущем примере. Нужен будет макрос вида:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim CellCount As Variant, rng As Range For Each rng In Selection.Areas 'перебираем все выделенные области RowsCount = rng.Rows.Count 'число строк ColumnsCount = rng.Columns.Count 'число столбцов CellCount = CellCount + RowsCount * ColumnsCount 'накапливаем общее число ячеек Next 'выводим в строку состояния Application.StatusBar = "Выделено: " & CellCount & " ячеек" End Sub
Этот макрос перебирает все выделенные с Ctrl области (если их несколько), сохраняет количество строк и столбцов в каждой области в переменных RowsCount и ColumnsCount и накапливает количество ячеек в переменной CellCount, которая затем и выводится в строку состояния. В работе это будет выглядеть следующим образом:
Само-собой, можно соединить этот и предыдущий макросы, чтобы выводить и адрес выделенного диапазона и количество ячеек одновременно. Понадобится изменить лишь одну предпоследнюю строку на:
Application.StatusBar = "Выделено: " & Replace(Selection.Address(0, 0), ",", ", ") & " - итого " & CellCount & " ячеек"
Тогда картина будет совсем замечательная:
Ну, я думаю, вы поняли идею. Предлагайте в комментариях — что еще полезного можно было бы отобразить в строке состояния?
Ссылки по теме
- Что такое макросы, как они работают, как их использовать и создавать
- Удобное координатное выделение на листе Excel
- Как сделать сложные формулы более наглядными
Для удобства работы с текстом в Excel существуют текстовые функции. Они облегчают обработку сразу сотен строк. Рассмотрим некоторые из них на примерах.
Примеры функции ТЕКСТ в Excel
Преобразует числа в текст. Синтаксис: значение (числовое или ссылка на ячейку с формулой, дающей в результате число); формат (для отображения числа в виде текста).
Самая полезная возможность функции ТЕКСТ – форматирование числовых данных для объединения с текстовыми данными. Без использования функции Excel «не понимает», как показывать числа, и преобразует их в базовый формат.
Покажем на примере. Допустим, нужно объединить текст в строках и числовые значения:
Использование амперсанда без функции ТЕКСТ дает «неадекватный» результат:
Excel вернул порядковый номер для даты и общий формат вместо денежного. Чтобы избежать подобного результата, применяется функция ТЕКСТ. Она форматирует значения по заданию пользователя.
Формула «для даты» теперь выглядит так:
Второй аргумент функции – формат. Где брать строку формата? Щелкаем правой кнопкой мыши по ячейке со значением. Нажимаем «Формат ячеек». В открывшемся окне выбираем «все форматы». Копируем нужный в строке «Тип». Вставляем скопированное значение в формулу.
Приведем еще пример, где может быть полезна данная функция. Добавим нули в начале числа. Если ввести вручную, Excel их удалит. Поэтому введем формулу:
Если нужно вернуть прежние числовые значения (без нулей), то используем оператор «—»:
Обратите внимание, что значения теперь отображаются в числовом формате.
Функция разделения текста в Excel
Отдельные текстовые функции и их комбинации позволяют распределить слова из одной ячейки в отдельные ячейки:
- ЛЕВСИМВ (текст; кол-во знаков) – отображает заданное число знаков с начала ячейки;
- ПРАВСИМВ (текст; кол-во знаков) – возвращает заданное количество знаков с конца ячейки;
- ПОИСК (искомый текст; диапазон для поиска; начальная позиция) – показывает позицию первого появления искомого знака или строки при просмотре слева направо
При разделении текста в строке учитывается положение каждого знака. Пробелы показывают начало или конец искомого имени.
Распределим с помощью функций имя, фамилию и отчество в разные столбцы.
В первой строке есть только имя и фамилия, разделенные пробелом. Формула для извлечения имени: =ЛЕВСИМВ(A2;ПОИСК(» «;A2;1)). Для определения второго аргумента функции ЛЕВСИМВ – количества знаков – используется функция ПОИСК. Она находит пробел в ячейке А2, начиная слева.
Формула для извлечения фамилии:
С помощью функции ПОИСК Excel определяет количество знаков для функции ПРАВСИМВ. Функция ДЛСТР «считает» общую длину текста. Затем отнимается количество знаков до первого пробела (найденное ПОИСКом).
Вторая строка содержит имя, отчество и фамилию. Для имени используем такую же формулу:
Формула для извлечения фамилии несколько иная: Это пять знаков справа. Вложенные функции ПОИСК ищут второй и третий пробелы в строке. ПОИСК(» «;A3;1) находит первый пробел слева (перед отчеством). К найденному результату добавляем единицу (+1). Получаем ту позицию, с которой будем искать второй пробел.
Часть формулы – ПОИСК(» «;A3;ПОИСК(» «;A3;1)+1) – находит второй пробел. Это будет конечная позиция отчества.
Далее из общей длины строки отнимается количество знаков с начала строки до второго пробела. Результат – число символов справа, которые нужно вернуть.
Формула «для отчества» строится по тем же принципам:
Функция объединения текста в Excel
Для объединения значений из нескольких ячеек в одну строку используется оператор амперсанд (&) или функция СЦЕПИТЬ.
Например, значения расположены в разных столбцах (ячейках):
Ставим курсор в ячейку, где будут находиться объединенные три значения. Вводим равно. Выбираем первую ячейку с текстом и нажимаем на клавиатуре &. Затем – знак пробела, заключенный в кавычки (“ “). Снова — &. И так последовательно соединяем ячейки с текстом и пробелы.
Получаем в одной ячейке объединенные значения:
Использование функции СЦЕПИТЬ:
С помощью кавычек в формуле можно добавить в конечное выражение любой знак или текст.
Функция ПОИСК текста в Excel
Функция ПОИСК возвращает начальную позицию искомого текста (без учета регистра). Например:
Функция ПОИСК вернула позицию 10, т.к. слово «Захар» начинается с десятого символа в строке. Где это может пригодиться?
Функция ПОИСК определяет положение знака в текстовой строке. А функция ПСТР возвращает текстовые значения (см. пример выше). Либо можно заменить найденный текст посредством функции ЗАМЕНИТЬ.
Скачать пример функции для работы с текстом в Excel
Читайте так же: как перевести число и сумму прописью.
Синтаксис функции ПОИСК:
- «искомый текст» — что нужно найти;
- «просматриваемый текст» — где искать;
- «начальная позиция» — с какой позиции начинать искать (по умолчанию – 1).
Если нужно учитывать регистр, используется функция НАЙТИ.
Потому что Excel — отличный союзник при выполнении любой работы, будь то графика, расчет результатов и даже создание выпадающих списков. Это также дает нам невероятную возможность создавать разные аварийные сообщения или напоминания на любую дату, о которой нужно помнить.
Многие пользователи не знают, что в Excel есть этот инструмент, и поэтому не знают, как им пользоваться. Это очень просто сделать, поэтому мы дадим вам все инструкции для создания сигналов тревоги или напоминаний в этой программе.
Напоминания или предупреждения важны , потому что если вы много работаете в Excel, это может напоминать вам о доставке работы. Чтобы сделать это, вам нужно создать электронную таблицу , затем мы переходим к окну с надписью «Программист», которое находится вверху, затем нажимаем первую опцию «Visual Basic».
Здесь вы увидите, что открывается новое окно, вверху мы нажимаем «Вставить», где мы нажимаем «Модуль», и вы увидите, что открывается пустой лист. В листе напишем следующую команду ‘Sub’, в котором нам нужно указать имя, которое мы хотим дать обратному вызову, например: Sub Delivery (). При копировании даем ввод и вы увидите, что появляется другая строка.
В середине этих двух строк мы скопируем «Msgbox». Нажмите пробел и кавычки, напишите сообщение, которое хотите получить при показе напоминания , «Отправить финансовую работу».
Внизу мы настроим время, для этого нажмите на ` `Это связующее вещество Когда вы это сделаете, вы увидите, что поле снова станет пустым, здесь мы выбираем раздел с надписью «Общие» и выбираем опцию «Рабочая книга», чтобы появилось две строки. Посередине этих строк мы напишем Application.OnTime TimeValue ( «19:00:00»), «Доставка».
Затем мы должны сохранить файл, когда мы это сделаем, мы должны выбрать тип «Книга Excel включена для макросов» . Мы закрываем этот файл и снова открываем его, и, наконец, когда придет время отзыва, вы заметите, что появляется небольшое уведомление с указанием введенной вами информации.
Как создать тревогу или оповещение в Excel?
Чтобы сделать эту тревогу, мы должны повторить первую часть из предыдущего процесса, который выполняется путем ввода «Visual Basic», затем мы нажимаем «Эта книга». В первом раскрывающемся меню мы выберем «Рабочая книга», а во втором раскрывающемся меню вы можете выбрать «Открыть».
В середине двух строк мы скопируем: Application.OnTime TimeValue («10:40:00»), «Indicate alarm». Между скобками мы можем место время, в которое мы хотим звучит тревога. Щелкните правой кнопкой мыши параметр «VBAProject», в меню нажмите «Вставить», затем «Модуль», вы увидите, что открывается новое окно.
Теперь мы напишем в новом модуле в первой строке: Sub Indicate Alarm (), затем в середину двух строк, которые мы скопируем: MsgBox «Звонок будильника…». Мы продолжаем сохранять его как «книгу Excel для макросов» и закрываем.
Вы должны Повторить и нажимаем «Активировать контент», ждем время прозвучит будильник и все.
Использование, которое мы можем применить для создания различных сигналов тревоги или напоминаний в Excel
Это программное обеспечение широко используется и рекомендуется для любого вида деятельности. При создании этих будильников мы можем упомянуть, что вы можете сделать их много комбинаций , адаптируясь к работе, которую вам нужно делать в данный момент.
Вы можете сделать будильник для запомни даты дней рождения друзья и друзья. С другой стороны, вы можете внедрить их в своих компаниях, создав оповещения об истечении срока действия для ваших различных запасов, для этого вам нужно будет только составить список с информацией о днях рождения или ваших компаниях, вы можете изменить цвет ячейки чтобы идентифицировать их.
При этом установите соответствующий будильник или напоминание. Как и в тех примерах, которые мы упомянули выше, вы можете сделать бесконечное количество этих напоминаний , для любого события нужно иметь в виду.
Важно указать, что они служат если вы работаете с листом Excel , то есть вы можете включить эти сигналы во время работы в этой программе, чтобы их можно было запомнить. Во время этих предупреждений рекомендуется обновление Votre программа с последней версией , который поможет вам больше в вашей деятельности.
- Строка состояния в Excel
Панель состояния Excel (Содержание)
- Строка состояния в Excel
- Как настроить строку состояния в Excel?
Строка состояния в Excel
«Строка состояния», как следует из слова, возвращается со статусом некоторых простых опций в Excel. Строка состояния находится горизонтально внизу любой рабочей книги Excel. Строка состояния дает быстрый просмотр некоторых параметров, таких как номер страницы (количество страниц в рабочей книге при работе в представлении «Макет страницы» или «Просмотр печати»), Количество ячеек, Сумма, Среднее, Минимальное и максимальное (по умолчанию отключено) ), Числовой счетчик (количество числовых значений в выбранном диапазоне ячеек) и т. Д. Строка состояния одинакова для всех офисных приложений (MS Word, MS PowerPoint, MS Access).
Как настроить строку состояния в Excel?
По умолчанию некоторые параметры уже активны в строке состояния Excel, такие как «Счет», «Сумма», «Среднее» и т. Д. Однако, что если нам понадобятся некоторые из них, которые по умолчанию не активны, например «Минимум», «Максимум» и т. Д.? Нам нужно настроить строку состояния, чтобы эти параметры также были активными.
- Щелкните правой кнопкой мыши в любом месте строки состояния, и панель настройки появится, как показано на рисунке ниже.
- Теперь проверьте (√) параметры, которые вы хотите отображать в строке состояния (как минимальные и максимальные).
- Все опции с галочкой (√) перед ними теперь активны в строке состояния Excel.
- Вы также можете отменить выбор / отменить выбор некоторых параметров, которые вы не хотите видеть в строке состояния.
Примечание. Если вы хотите выйти из настраиваемой строки состояния, просто щелкните в любом месте листа за пределами всплывающего меню.
Довольно просто, да?
В этом уроке я расскажу о некоторых опциях, которые по умолчанию включены в строке состояния Excel, а также о некоторых опциях, которые не включены по умолчанию, но могут быть полезны, если их добавить туда.
Параметр «Режим ячейки» в строке состояния Excel
Опция «Режим ячейки» включена по умолчанию в Excel и отображается в крайней левой части строки состояния. Он имеет различные режимы, перечисленные ниже:
Готово — означает, что ячейка, в которой находится курсор, готова принять от вас пользовательский ввод. Это также можно рассматривать как общее состояние, когда ячейка не имеет входных данных.
Enter — это означает, что пользователь либо начал вводить данные в ячейку, либо дважды нажал F2, чтобы отредактировать ячейку. Введенное слово само по себе говорит о том, что ввод был начат.
Редактировать — это очень похоже на Enter. Это означает, что ячейка редактируется (старые данные заменяются новыми). Он отображается, когда пользователь дважды щелкает ячейку или нажимает клавишу F2 один раз.
Точка — активируется, когда пользователь вводит формулу в ячейку, предоставляя в качестве входных данных другие ячейки (в которых есть данные).
Пожалуйста, смотрите прикрепленный образец изображения для вашей справки.
Слайдер масштабирования в строке состояния Excel
- Если вы часто работаете в Excel, вам, возможно, хорошо известен этот параметр, который находится в крайнем правом углу строки состояния.
- Ползунок масштабирования позволяет быстро увеличивать или уменьшать рабочий лист Excel, над которым вы работаете.
- Кроме того, он имеет (+) (-) клавиши, которые можно использовать для « Zoom In » и « Zoom Out » соответственно. Используя Zoom In, вы можете увеличить текущую рабочую таблицу и более внимательно посмотреть на данные. Уменьшить помогает вам уменьшить увеличение листа, и вы можете увидеть больше данных в одном кадре.
Смотрите пример изображения ниже для вашей справки.
Процент увеличения
- Процент масштабирования также можно использовать для увеличения листа и можно считать, что он работает так же, как и в слайдере масштабирования.
- Он расположен рядом с ползунком масштабирования в левой части строки состояния.
- После того, как вы нажмете на процент увеличения, откроется диалоговое окно масштабирования, откуда вы сможете выбрать процент увеличения для текущего рабочего листа.
Статистические / Математические Варианты
Есть несколько статистических / математических опций для быстрого расчета числовых данных в строке состояния Excel. Эти параметры включены по умолчанию. Давайте пройдем через это.
- Количество — подсчитывает количество непустых ячеек из столбцов / строк. (независимо от типа данных Числовой / Символический).
- Среднее — дает среднее значение по всем непустым ячейкам из столбцов / строк.
- Sum — делает то, что предлагает слово, суммирует все числовые значения.
- Числовой счетчик — эта опция не включена по умолчанию, поэтому вы должны включить ее через настройку строки состояния Excel. Эта опция позволяет вам захватывать количество числовых объектов в столбце. Это становится более полезным, когда у вас есть смешанные значения данных (Числовые + Символ / Строка) в ячейках.
Примечание. Обратите внимание, что параметры «Среднее» и «Сумма» можно использовать только для тех ячеек, которые имеют числовые значения.
Минимум и максимум
- Эти два снова являются некоторыми из полезных опций для математических / статистических расчетов.
- Что если у вас есть большое количество числовых данных (например, 20 000 ячеек), и вы хотите взглянуть на минимальное и максимальное значения из одного и того же? Можно ли судить невооруженным глазом? Невозможно. Вот почему эти две опции есть в настраиваемой строке состояния (по умолчанию не включено).
- Минимум — если этот параметр включен, параметр «Минимум» отображает минимальное значение в строке состояния из заданных непустых числовых ячеек.
- Максимум — если этот параметр включен, параметр максимума дает нам максимальное значение в строке состояния из заданных непустых числовых ячеек.
Примечание : Вы заметили, что есть одна ячейка, которая является пустой. Однако Excel не учел это при расчете как минимума, так и максимума. Причина этого в том, что пустая ячейка всегда рассматривается как ячейка без данных (не думайте, что пустая ячейка означает ячейку с нулевым значением)
Представления рабочего листа
- Эта функция включена по умолчанию и может быть удобной для переключения между различными видами листа, такими как « Обычный вид», « Вид макета страницы», «Просмотр разрыва страницы» . Эту опцию можно найти в правом нижнем углу строки состояния Excel (перед ползунком масштабирования).
Нормальный вид:
Вид макета страницы:
Предварительный просмотр разрыва страницы
Номер страницы
- Параметр Номер страницы очень полезен, когда вы находитесь в представлении макета страницы на рабочем листе.
- Он включен по умолчанию и дает количество страниц, которые используются в данный момент (говорят, что страница в рабочей книге используется, если пользователь редактирует эту страницу).
Это все с моей стороны, ребята, мы воспользуемся моментом, чтобы быстро обернуть вещи некоторыми вещами, которые нужно запомнить.
Что нужно помнить о строке состояния в Excel
- Строка состояния в Excel дает статус некоторых простых, но часто используемых опций, таких как сумма, среднее и т. Д.
- Некоторые варианты возможны только с числовыми данными, например. Среднее, Сумма, Минимум, Максимум и т. Д.
- Некоторые параметры возможны как для числовых, так и для строковых (символьных) данных. Например. Граф.
- Не все параметры активны / включены по умолчанию, в любое время вы можете настроить строку состояния в параметрах Excel.
Рекомендуемые статьи
Это было руководство к строке состояния в Excel. Здесь мы обсудим, как настроить и использовать строку состояния в Excel с практическими примерами. Вы также можете просмотреть наши другие предлагаемые статьи —
- Как использовать Solver Tool в Excel?
- Excel Format Painter
- Автозаполнение в Excel
- Руководство по Excel Trendline