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

Первая задача — настроить InputBox так, чтобы он отображал информацию пользователю. Например, предположим, что у вас есть пять вариантов, и вы хотите, чтобы пользователь выбрал один вариант из этих пяти. Вы можете использовать следующий код, чтобы собрать пять параметров, каждый в отдельной строке:

sPrompt = "1. This is your first choice" & vbCrLf sPrompt = sPrompt & "2. This is your second choice" & vbCrLf sPrompt = sPrompt & "3. This is your third choice" & vbCrLf sPrompt = sPrompt & "4. This is your fourth choice" & vbCrLf sPrompt = sPrompt & "5. This is your fifth choice"

Теперь вы можете использовать строку sPrompt при вызове функции InputBox в вашем макросе. Затем вы переводите то, что пользователь отвечает, в число, которое представляет его выбор из ваших пяти вариантов. Код для этого следующий:

sUserResp = InputBox(sPrompt, "The Big Question")

iUR = Val(sUserResp)

В этом примере ответ от функции InputBox назначается переменной sUserResp, которая должна быть строкой. Переменная iUR, которая является числовой (целочисленной), затем устанавливается на основе значения строки. (Функция Val возвращает значение в виде строки.)

Осталось только выполнить действие в зависимости от того, какой номер был выбран, от 1 до 5. Для этого можно использовать структуру Select Case.

Полная подпрограмма может выглядеть в VBA следующим образом:

Sub TestInput()

Dim sPrompt As String     Dim sUserResp As String     Dim iUR As Integer

sPrompt = "1. This is your first choice" & vbCrLf     sPrompt = sPrompt & "2. This is your second choice" & vbCrLf     sPrompt = sPrompt & "3. This is your third choice" & vbCrLf     sPrompt = sPrompt & "4. This is your fourth choice" & vbCrLf     sPrompt = sPrompt & "5. This is your fifth choice"

iUR = 0     While iUR < 1 Or iUR > 5         sUserResp = InputBox(sPrompt, "The Big Question")

iUR = Val(sUserResp)

Wend     Select Case iUR         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. Если введенное значение выходит за пределы этого диапазона, пользователя просто спрашивают снова.

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (10763) применим к Microsoft Word 2007, 2010, 2013 и 2016. Вы можете найти версию этого совета для более старого интерфейса меню Word здесь:

link: / word-Offering_Options_in_a_Macro [Варианты предложения в макросе].