Если вы только начинаете разрабатывать макросы, возможно, вы ищете простой способ предложить пользователю набор вариантов, а затем предпринять действия на основе ответа пользователя. Это относительно простая задача, если вы используете функцию 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 [Параметры предложения в макросе].