Предлагаемые параметры в макросе (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 Integer 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.
Этот совет (3098) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:
link: / excelribbon-Offering_Options_in_a_Macro [Опции предложения в макросе]
.