- •Вопросы к экзамену
- •Ключевые слова Private, Public и Static
- •Как видим, для объявления константы используется ключевое слово Const, в отличии от переменных, константные значения занимают меньше места. Приоритеты операций
- •Операции
- •Оператор присваивания
- •Vba функции работы со строками
- •Vba одномерный массив
- •Vba многомерный и двумерный массив
Vba функции работы со строками
ASC(строковое значение) – применяется для получения числового ASCII кода заданного символа. В качестве параметра можно передать как целую строку (проверка произойдет для первого символа в строке), так и один символ или пробел.
Chr(код символа) – работает в обратном порядке по сравнению с предыдущей функцией. В качестве параметра мы передаем ASCII код, а на выходе получаем символ по заданному коду. Данная строковая VBA функция актуальна в тех случаях, когда нужно вывести служебный символ, например, кавычки, хотя чаще, используются именованные VBA константы.
InStr(строка1, строка2, [старт]) – предназначена для поиска последовательности знаков (строка2) в заданной строке (строка1). Можно также задать начальную позицию для поиска вхождения (необязательный параметр “старт”).
InStrRev(строка1, строка2, [старт]) – аналог предыдущей функции, но поиск происходит в обратном порядке.
Left(строка, длина) – позволяет вернуть заданное количество знаков (параметр “длина”) для выбранной строки (параметр “ строка ”), начиная слева.
Right(строка, длина) – позволяет вернуть заданное количество знаков для выбранной строки, начиная справа.
Mid (строка, длина, старт) – позволяет вернуть заданное количество знаков (параметр “длина”) для выбранной строки, начиная с заданной позиции (параметр “старт”).
Len(строка) – определяет численное количество символов в строке.
LCase(строка) – предназначена для преобразования всех символов в переданной строке в нижний регистр.
UCase(строка) – предназначена для преобразования всех символов в переданной строке в верхний регистр.
LSet(строка, длина) – заполняет содержимое переменной символами из другой переменной начиная слева, длина не изменяется, лишние знаки будут обрезаны, а вместо недостающих, будут подставляться пробелы.
RSet(строка, длина) – логика работы та же, что и для предыдущей vba функции работы со строками, но процесс происходит справа.
LTrim(строка) – удалить пробелы слева в строке
RTrim(строка) – удалить пробелы справа в строке
Trim(строка) – удалить пробелы справа и слева в строке
Replace() – замена в строке одних символов на другие
Space(количество_пробелов) – формирование строки из заданного количества пробелов
String(количество, символ) – формирование строки из заданного количества прописанных символов
Spc() – применяется для формирования вывода данных в консольном окне командной строки. Происходит размножение пробелов, учитывая ширину командной строки.
StrComp(строка1, строка2) – сравнение двух строк, вернет 0 при равенстве, и -1 в противном случае.
StrConv(строка, метод, [LCID]) – данная функция vba является универсальной, так как позволяет преобразовать заданную строку в различные вариации (верхний и нижний регистр, кодировка, перевод байт).
Строка – собственно, строковое значение, над которым нужно провести преобразование.
Метод – задает метод преобразования, данный параметр может принимать следующие значения:
vbUpperCase – перевод в верхний регистр, значение 1
vbLowerCase – перевод в нижний регистр, значение 2
vbPropperCase – перевод первых символов всех слов в верхний регистр, а остальные символы – в нижний, значение .
vbWide – применяется для кодировки восточных языков. Перевод символов в один байт с двухбайтовых. Значение 4.
vbNarrow – аналог предыдущему параметру, но тут происходит перевод двух байт в один, значение 8.
vbKatakana – происходит преобразование символов алфавита Хирагана в символы для алфавита Катана, применим для японского языка, значение 16.
vbHiragana – аналог предыдущего параметра, но тут происходит преобразования вида Катана в Хирагана, значение 32. VBA строковые функции
vbUnicode – перевод заданной строки в Unicode кодировку, значение 64.
vbFormatUnicode – перевод из кодировки Unicode в стандартную, значение 128.
LCID – параметр не является обязательным, (vba строковые функции) он задает идентификатор региональных настроек. По умолчанию значение LocaleId, то есть, то значение, что установлено в панели управления.
StrReverse(строка) – инвертировать расположение знаков в строке, проще говоря, “отзеркаливает”.
Tab() – позволяет размножить символы табуляции в заданном количестве. Помимо этого, для вставки табуляции применяется именованная константа vbTab.
Функции преобразования типов. Примеры.
Синтаксис
CBool( выражение )
CByte( выражение )
CCur( выражение )
CDate( выражение )
CDbl( выражение )
CDec( выражение )
CInt( выражение )
CLng( выражение )
CLngLng( выражение ) (действительно только для 64-разрядных платформ).
CLngPtr( выражение )
CSng( выражение )
CStr( выражение )
CVar( выражение )
Обязательное выражение-аргумент — это любое строковое выражение или числовое выражение.
Возвращаемые типы
Имя функции определяет возвращаемый тип, как показано ниже.
Функция |
Возвращаемый тип |
Диапазон выражения-аргумента |
CBool |
Boolean |
Любое допустимое строковое или числовое выражение. |
CByte |
Byte |
От 0 до 255. |
CCur |
Currency |
От -922 337 203 685 477,5808 до 922 337 203 685 477,5807. |
CDate |
Date |
Любое допустимое выражение даты. |
CDbl |
Double |
От -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений. |
CDec |
Decimal |
+/-79 228 162 514 264 337 593 543 950 335 для чисел без десятичных знаков. Для чисел с 28 десятичными знаками диапазон составляет +/-7,9228162514264337593543950335. Наименьшим возможным числом, отличным от нуля, является число 0,0000000000000000000000000001. |
CInt |
Integer |
От -32 768 до 32 767; дробная часть округляется. |
CLng |
Long |
От -2 147 483 648 до 2 147 483 647; дробная часть округляется. |
CLngLng |
LongLong |
От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807; дробная часть округляется. (Действительно только для 64-разрядных платформ). |
CLngPtr |
LongPtr |
От -2 147 483 648 до 2 147 483 647 для 32-разрядных систем; от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 для 64-разрядных систем; дробная часть округляется в обоих типах систем. |
CSng |
Single |
От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений. |
CStr |
String |
Диапазон значений, возвращаемых функцией CStr, зависит от выражения-аргумента. |
CVar |
Variant |
Диапазон совпадает с типом Double для числовых значений и с типом Stringдля нечисловых значений. |
Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble) ' MyString contains "437.324".
Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.
Ввод и вывод данных. Функция InputBox. Функция MsgBox. Примеры.
Dim Input
Input = InputBox("Введите Ваше имя: ")
MsgBox (" Вы ввели: " & Input )
MsgBox ( x & y)
Для организации диалога с пользователем VBA представляет две встроенные функции - MsgBox и InputBox. Окно сообщений MsgBox выводит сообщения для пользователя, а окно ввода InputBox обеспечивает возможность получения информации от пользователя.
Функция MsgBox() выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа Integer, указывающее, какая кнопка была нажата.
Формат функции MsgBox:
MsgBox (Prompt [, Buttons] [, Title] [, HelpFile, Context])
Назначение параметров:
Prompt – строковое выражение, отображаемое как сообщение в диалоговом окне;
Title – строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот параметр опущен, в строку заголовка помещается имя приложения, из которого запускается программа VBA;
HelpFile – строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне; обычно это файл, который вы уже должны были создать с помощью Windows Help Compiler. Если этот параметр указан, необходимо также указать параметр Context;
Context – числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот параметр указан, необходимо указать также параметр HelpFile;
Buttons – числовое выражение, которое задает количество и тип кнопок в диалоговом окне MsgBox. Buttons указывает также кнопку по умолчанию в диалоговом окне и содержит ли это диалоговое окно стандартные значки Windows для предупредительных сообщений и запросов пользователя. Значения Buttons можно получить из справочной системы.
Простой пример использования функции MsgBox:
Sub sample3()
MsgBox "Видите ли вы две кнопки?", vbYesNo + vbInformation, "Сообщение"
End Sub
В данном примере MsgBox применяется не в виде функции, а в виде процедуры (т.е. не возвращает никакого значения). Следовательно, код выбранной кнопки нигде не сохраняется и не может быть использован. Чтобы определить, какая кнопка была нажата, MsgBox необходимо вызвать как функцию, т.е. сохранить возвращаемое значение в переменную .
Использование MsgBox
Sub sample4()
Dim res ' объявляем переменную
вызываем MsgBox и сохраняем значение в переменной
res = MsgBox("Видите ли вы две кнопки?", vbYesNo + vbInformation, "Сообщение")
Debug.Print res ' печатаем полученное значение
End Sub
При выполнении этого макроса, когда пользователь выбирает кнопку Yes или No в переменной res сохраняется число, соответствующее выбранной кнопке.
Вместо возвращаемых функцией MsgBox целочисленных значений удобнее пользоваться предопределенными константами VBA. В таб. 11 приведены возвращаемые значения констант функции MsgBox.
Таблица 11. Возвращаемые значения функции MsgBox
Константа |
Означает, что пользователь нажал кнопку |
vbAbort |
Стоп (Abort) |
vbCancel |
Отмена (Cancel) |
vbIgnore |
Пропустить (Ignore) |
vbNo |
Нет (No) |
vbOk |
Ок |
vbRetry |
Повтор (Retry) |
vbYes |
Да (Yes) |
Проверка возращаемого значения MsgBox
Sub sample5()
вызываем MsgBox и сохраняем значение в переменной
res = MsgBox("Видите ли вы две кнопки?", vbYesNo + vbInformation, "Сообщение")
' проверяем, какая кнопка нажата
If res = vbYes Then : MsgBox "Вы нажали Yes", , "Результат выбора"
Else : MsgBox "Вы нажали No", , "Результат выбора"
End If
End Sub
Функция InputBox() выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста, а затем возвращает значение типа String, содержащее текст, введенный в поле. Формат функции InputBox:
InputBox (Prompt [, Title] [, Default] [, XPos] [, Ypos] [, HelpFile, Context])
Назначение параметров:
Prompt – строковое выражение, отображаемое как сообщение в диалоговом окне;
Title – строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот параметр опущен, в строку заголовка помещается имя приложения;
Default – строковое выражение, отображаемое в поле ввода и используемое по умолчанию, если пользователь не введет другую строку. Если этот параметр опущен, поле ввода изображается пустым;
Xpos и Ypos – числовые выражения, которые указывают местоположение окна ввода и являются координатами верхнего левого угла диалогового окна; Xpos – горизонтальное расстояние от левого края окна; Ypos – вертикальное расстояние от верхнего края окна. Если эти параметры опущены, диалоговое окно выравнивается по центру экрана;
HelpFile – строковое выражение, определяющее имя существующего файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот параметр указан, необходимо также указать параметр Context;
Context – числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот параметр указан, необходимо указать также параметр HelpFile.
Приведем пример использования функции InputBox для получения имени пользователя.
Sub sample6()
Dim username As String
username = InputBox("Введите ваше имя ", "Пример 6")
MsgBox ("Здравствуйте, "+username)
End Sub
Условная инструкция (If ... Then ... Else). Примеры.
Блочная форма:
If <условие> then < оператор 1>:
Else <оператор 2>:
End if;
If <условие> then
Else
If <условие> then
-
End if;
End if;
If <условие> then
Else if<условие> then
End if;
Пример:
If (n1 + n) = p1 Then
b1 = b1 + s * 2
Else
If (n1 + n < 7 And p1 < 7) Or (n1 + n > 7 And p1 > 7) Then
b1 = b1 + s
Else: b1 = b1 - s
End If
End If
If b1 <= 0 Or b1 >= b Then
If b1 >= b Then
MsgBox ("вы выйграли")
Else
MsgBox ("вы проиграли")
End If
Оператор выбора варианта (Select Case). Примеры.
Select Case number
Case 1 To 4
Msgbox("первый этаж")
Case 5 to 8
Msgbox("второй этаж")
Case 9 To 12
Msgbox ("третий этаж")
Case Else
Msgbox("квартиры с таким номером нет ")
End Select
Оператор цикла с предусловием (While … Wend). Примеры.
While <условие>
<оператор>
Wend
Counter = 0
While Counter < 20
Counter = Counter + 1
Wend
Операторы цикла с условиями (Do … Loop). Примеры.
Do while /until<условие>
<оператор>
Exit do
Loop while/until<условие>
Do While summ <= 1000
summ = summ + 1
Loop
Label1.Caption = summ
summ = 0
Do
summ = summ + 1
Loop While summ <= 1000
Label2.Caption = summ
summ = 0
Do Until summ >= 1000
summ = summ + 1
Loop
Label3.Caption = summ
summ = 0
Do
summ = summ + 1
Loop Until summ >= 1000
Label4.Caption = summ
Оператор цикла с параметром (For ... Next). Примеры.
For <переменная счётчик>=<нач знач> to <кон знач> step<знач>
<операторы>
Next<переменная>
Пример:
For i = 1 To 10 Step 2
a = a +1
Next i
Оператор цикла для работы с коллекциями (For … each). Примеры.
For each <переменная> in <семейство/коллекция>
<>
Next
For Each my_slide In pr.ActivePresentation.Slides
Set my_shape = my_slide.Shapes.AddTextbox(msoTextOrientationHorizontal, 20, 20, 100, 400)
my_shape.TextFrame.TextRange.Text = "Михайлова Н.А."
my_shape.TextFrame.TextRange.Font.Bold = True
my_shape.TextFrame.TextRange.Font.Size = 9
my_shape.TextFrame.TextRange.Font.Color = -634567
Next
Инструкция With. Примеры.
With objectExpression
[ statements ]
End With
Термин |
Определение |
objectExpression |
Обязательный. Выражение, результатом которого является объект. Выражение может быть произвольно сложным и вычисляется только один раз. Результатом выражения могут быть данные любого типа, включая простейшие типы. |
statements |
Необязательный. Один или несколько операторов между With и End With, которые могут ссылаться на члены объекта, создаваемого при вычислении выражения objectExpression. |
End With |
Обязательный. Завершает определение блока With. |
Dim theCustomer As New Customer
With theCustomer
.Name = "Coho Vineyard"
.URL = "http://www.cohovineyard.com/"
.City = "Redmond"
End With
Массивы. Описание массивов. Изменение нижней границы индексов (Option Base).Динамические массивы. Изменение границ массивов (ReDim). Примеры.
