Предлагаемые параметры в макросе (Microsoft Excel)
Если вы только начинаете разрабатывать макросы, возможно, вы ищете простой способ предложить пользователю набор вариантов, а затем предпринять действия на основе ответа пользователя. Это относительно простая задача, если вы используете функцию InputBox вместе со структурой Select Case.
Первая задача — настроить InputBox так, чтобы он отображал информацию пользователю. Например, предположим, что у вас есть пять вариантов, и вы хотите, чтобы пользователь выбрал один вариант из этих пяти. Вы можете использовать следующий код, чтобы собрать пять параметров, каждый в отдельной строке:
Prompt = "1. This is your first choice" & vbCrLf Prompt = Prompt & "2. This is your second choice" & vbCrLf Prompt = Prompt & "3. This is your third choice" & vbCrLf Prompt = Prompt & "4. This is your fourth choice" & vbCrLf Prompt = Prompt & "5. This is your fifth choice"
Теперь вы можете использовать строку приглашения при вызове функции InputBox в макросе. Затем вы переводите то, что пользователь отвечает, в число, которое представляет его выбор из ваших пяти вариантов. Код для этого следующий:
UserResp = InputBox(Prompt, "The Big Question") UR = Val(UserResp)
В этом примере ответ от функции InputBox присваивается переменной UserResp, которая должна быть строкой. Переменная UR, которая является числовой, затем устанавливается на основе значения строки. (Функция Val возвращает значение в виде строки.)
Осталось только выполнить действие в зависимости от того, какой номер был выбран, от 1 до 5. Для этого можно использовать структуру Select Case.
Полная подпрограмма может выглядеть следующим образом:
Sub Macro1() Dim Prompt As String Dim UserResp As String Dim UR As Single Prompt = "1. This is your first choice" & vbCrLf Prompt = Prompt & "2. This is your second choice" & vbCrLf Prompt = Prompt & "3. This is your third choice" & vbCrLf Prompt = Prompt & "4. This is your fourth choice" & vbCrLf Prompt = Prompt & "5. This is your fifth choice" UR = 0 While UR < 1 Or UR > 5 UserResp = InputBox(Prompt, "The Big Question") UR = Val(UserResp) Wend Select Case UR Case 1 'Do stuff for choice 1 here Case 2 'Do stuff for choice 2 here Case 3 'Do stuff for choice 3 here Case 4 'Do stuff for choice 4 here Case 5 'Do stuff for choice 5 here End Select End Sub
Обратите внимание, что в этом примере используется цикл While … Wend вокруг функции InputBox. Это делается для того, чтобы убедиться, что пользователь вводит число от 1 до 5. Если введенное значение выходит за пределы этого диапазона, пользователя просто спрашивают снова.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (11059) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Offering_Options_in_a_Macro [Параметры предложения в макросе]
.