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