Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Управляющая инструкция Select Case

Поиск

Структура Select Ca s e позволяет в зависимости от значения переменной или выражения выполнять один из нескольких фрагментов кода. Ее действие подобно действию структуры If- Then- Else, в которой условие переопределяется ключевым словом Elself. В программе IfThenElseIf мы использовали инструкцию If- Then- Else для определения прав пользователя согласно введенному им паролю. В следующей программе те же действия выполняются средствами структуры Select Case.

Sub SelectCase()

Dim Password As String

Dim Sheet As Object

Password = LCase(InputBox("Введите пароль:", "Password"))

Select Case Password

Case "level1"

For Each Sheet In ActiveWorkbook.Sheets

Sheet.Visible = True

Sheet.Unprotect

Next

MsgBox "У Вас есть неограниченный доступ ко всем листам данной рабочей книги."

Case "Ievel2"

ActiveWorkbook.Worksheets(1).Visible = True

ActiveWorkbook.Worksheets(1).Unprotect

MsgBox "У Вас есть доступ только к первому листу рабочей книги."

Case "Ievel3"

ActiveWorkbook.Worksheets(l).Visible = True

MsgBox "Вам доступен для чтения первый лист."

Case Else

MsgBox "Пароль введен неверно. Попробуйте ещё раз."

End Select

End Sub

Ниже описаны компоненты инструкции Select Case, использованной в программе SelectCase.

Select Case           Ключевые слова, отмечающие начало инструкции

Password           Переменная или выражение, чье значение определяет выбор фрагмента кода для выполнения. Оно должно совпадать со значением, указанным после одного из ключевых слов Case. Если ни одного совпадения нет, выполняется фрагмент, написанный после слов Case Else. Если и этих слов нет, управление передается инструкции, заданной после End Select

Case "levell" Первый вариант значения. Если значение определяющего выражения совпадает с ним, выполняется фрагмент кода до следующего ключевого слова Case, а затем управление передается инструкции, написанной после End Select. Если совпадения нет, управление передается следующей инструкции Case

Case "level2" Второй вариант значения. Действует так же, как Case "levell"

Case "level3" Третий вариант значения. Действует так же, как Case "levell"

Case Else              Фрагмент кода, указанный за этими словами, выполняется, если значение определяющего выражения не совпало ни с одним из предыдущих вариантов Case

End Select           Ключевые слова, отмечающие конец инструкции Select Case

В программе SelectCase2 также использована структура Select Case, несколько отличающаяся от предыдущего примера.

Sub SelectCase2()

Dim Score As Integer

Score = Int(100 * Rnd())

Select Case Score

Case 0 To 33

MsgBox "Счет: " & Score & Chr(13) & _

"Вы в первой тройке."

Case 34 To 66

MsgBox " Счет: " & Score & Chr(13) & _

" Вы во второй тройке."

Case 67 To 100

MsgBox " Счет: " & Score & Chr(13) & _

"Вы в третьей тройке."

End Select

End Sub

Здесь для выполнения фрагмента кода значение определяющего выражения должно попадать в определенный интервал, границы которого, разделенные словом То, указаны после ключевого слова Case.

Встроенная функция Chr принимает один аргумент — число от 0 до 255 — и возвращает соответствующий символ ASCII. Chr(13) возвращает символ перевода строки, который в информационном окне приводит к переносу текста сообщения на новую строку.

Управляющая инструкция For-Next

Она позволяет выполнять несколько команд заданное число раз. Рассмотрим следующий при­мер: в нем число, записанное в переменную Base, возводится в степень, содер­жащуюся в переменной Power.

Sub ForNext()

Dim Base As Integer

Dim Power As Integer

Dim Result As Integer

Dim Count1 As Integer

Base = 4

Power = 5

Result =1

For Count = 1 To Power Step 1

Result = Result * Base

Next

MsgBox Base & " в степени " & Power & " = " & Result

End Sub

В этой программе с помощью цикла For- Next 4 возводится в пятую степень. Надо отметить, что в VBA есть оператор возведения в степень ^, поэтому для подобного расчета достаточно написать

Num2 = 4 ^ 5

Мы решили использовать цикл For- Next для возведения в степень исключительно в учебных целях. В программе ForNext для вычислений используются четыре целые временные: Base, равная 4, Power, равная 5, Result, предназначенная для хранения результата, и Countl — счетчик цикла. Рассмотрим отдельные элементы инструкции For- Next.

For Ключевое слово, отмечающее начало инструкции For- Next
Count = 1 То Power Выражение, определяющее счетчик и его начальное и конечное значения, задающие число повторений цикла. В данном случае в качестве счетчика используется переменная Count. Ключевое слово То разделяет начальное (1) и конечное (Power) значения счетчика. При первом обращении к циклу переменной Count присваивается значение 1, и начинается выполнение цикла
Step 1 Ключевое слово, задающее шаг приращения счетчика при завершении очередного цикла. Чаще всего в циклах For- Next он равен 1, но может быть любым целым числом, в том числе и отрицательным (тогда значение счетчика в каждом цикле уменьшается). В начале очередного цикла значение счетчика сравнивается с его конечным значением. Если разница положительная (значение счетчика превосходит его конечное значение), управление передается инструкции, заданной после ключевого слова Next. To же самое происходит и при отрицательной разнице. Указание ключевого слова Step и величины шага не является обязательным. Если они не определены, VBA выполняет цикл с шагом 1.
Result = Result * Base Тело цикла. Может состоять из нескольких инструкций
Next Ключевое слово, отмечающее конец инструкции For- Next. При достижении ключевого слова Next значение счетчика увеличивается на величину шага, после чего управление передается на начало цикла. Затем происходит сравнение счетчика с конечным значением, и цикл при необходимости повторяется снова


Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 39; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.15.70.0 (0.009 с.)