Функции преобразования данных
Visual Basic предоставляет несколько функций для преобразования одного типа данных в другой
ФункцияAsc(S) Возвращает число кода символа, соответствующее первой букве строки S. Буква "А", например, имеет код символа 65
Chr(N) Возвращает строку из одного символа, соответствующего коду символа N, который должен быть числом между 0 и 255, включительно. Код символа 65, например, возвращает букву "А" (Chr(13) – символ возврата каретки, Chr(10) – символ смещения на одну строку)
Hex(N) Возвращает строку, содержащую шестнадцатиричное представление N
|Oct(N) Возвращает строку, содержащую восьмиричное представление N
CBool(N) Возвращает Boolean-эквивалент численного выражения N
CByte(E) Возвращает численное значение типа Byte(от 0 до 255); Е – любое допустимое численное или строковое выражение, которое может быть преобразовано в число
CCur(E) Возвращает численное значение типа Currency; E – любое допустимое численное или строковое выражение, которое может быть преобразовано в число
CDate(E) Возвращает значение типа Date. E может быть любым допустимым выражением (строкой или числом), представляющим дату в диапазоне 1/1/100– 12/31/9999, включительно
CDbl(E) Возвращает численное значение типа Double; E – любое допустимое численное или строковое выражение, которое может быть преобразовано в число
Sub pr()
Dim i, s As Integer
s = 0
For i = 20 To 100 Step 1
If i Mod 2 = 0 Then
s = s + i
End If
Next i
MsgBox s
End Sub
№13 Функции даты и времени в Visual Basic for Application.
Функции даты и времени
VBA-функции даты и времени обычно используются для получения текущей даты и времени, разбиения значения даты на ее составляющие части или для преобразования строк и чисел в значения типа Date
ФункцияDate Возвращает системную дату. Можно также использовать эту функцию как процедуру для установки системных часов компьютера. Более подробно можно узнать из справочной системы VBA
Time Возвращает системное время компьютера как значение типа Date. Можно также использовать эту функцию как процедуру для установки системных часов. Более подробно можно узнать из справочной системы VBA
Now Возвращает системную дату и время
Year(D) Возвращает целое, являющееся частью выражения типа Dateи содержащее год. Год возвращается как число между 100 и 9999
Month(D) Возвращает целое, являющееся частью выражения типа Date, содержащее месяц. Месяц возвращается как число между 1 и 12, включительно
Day(D) Возвращает целое, являющееся частью выражения типа Dateи содержащее день. День возвращается как число между 1 и 31, включительно
Weekday(D) Возвращает целое, содержащее день недели для выражения типа Date. День недели возвращается как число между 1 и 7, включительно; 1 – это воскресенье, 2 – понедельник и так далее
Hour(D) Возвращает целое, содержащее часы как часть времени, содержащегося в выражении типа Date. Часы возвращаются как число между 0 и 23, включительно. Если выражение D не содержит значения времени, то Hour возвращает 0
Minute(D) Возвращает целое, содержащее минуты как часть времени в выражении типа Date.Минуты возвращаются как число между 0 и 59, включительно. Если выражение D не содержит значения времени, Minute возвращает 0
Second(D) Возвращает целое, содержащее секунды как часть времени в выражении типа Date. Секунды возвращаются как число между 0 и 59, включительно. Если выражение D не содержит значения времени, Second возвращает 0
Sub pr()
Dim i, s As Integer
s = 0
For i = 30 To 200 Step 1
If i Mod 2 <> 0 Then
s = s + i
End If
Next i
MsgBox s
End Sub
№14 Строковые функции в Visual Basic for Application.
Строковые функции
Строковые функции VBA часто применяются для нахождения заданных строк внутри других строк, для сравнения одной строки с другой и копирования выбранных частей строк
ФункцияInStr([Nl,] SI, S2[, N2]) Возвращает положение S2 в S1. N1 – начальное положение для поиска; N2 определяет тип сравнения. N1 и N2 необязательны. Если N2 опускается, то для поиска используется текущая установка Option Compare
InStrRev(Sl, S2 [, Nl[, N2]]) Возвращает позицию появления строки S2 внутри S1, в направлении от конца (или N1) к началу строки. N2 определяет тип сравнения. Если N2 опускается, то для поиска используется текущая установка Option Compare
LCase(S) Возвращает строку (тип String), содержащую копию S со всеми символами верхнего регистра, преобразованными в символы нижнего регистра
Left(S, N) Возвращает строку; копирует N символов из S, начиная с левого крайнего символа S
Len(S) Возвращает число символов в S, включая начальные и конечные пробелы
LTrim(S) Возвращает копию строки S после удаления символов пробела из левой части строки (начальные пробелы)
Mid(S, Nl, N2) Возвращает строку; копирует N2 символов из S, начиная с позиции символа в S, заданной аргументом N1. N2 является необязательным; если N2 опущен, то Mid возвращает все символы в строке S от позиции N1 до конца строки
Right(S, N) Возвращает значение типа String; копирует N символов из S, начиная с правого крайнего символа S
RTrim(S) Возвращает копию строки S после удаления символов пробела из правой части строки (конечные символы)
Sub pr()
Dim i, p, n As Integer
p = 1
n = CInt(InputBox("Введите число "))
For i = 1 To т Step 1
p = p * i
Next i
MsgBox s
End Sub
№15 Условный оператор в Visual Basic for Application.
Простейшими VBA-операторами изменения порядка выполнения кода являются операторы If…Thenи If…Then…Else. Оператор If…Thenпозволяет VBA выбрать единственную альтернативную ветвь выполнения процедуры. Связанный с ним оператор If...Then...Elseдает возможность VBA выбирать из двух альтернативных ветвей кода процедуры на основе оценки того, является ли указанное условие равным True.
Оператор If…Thenимеет две различные формы синтаксиса. Простая форма – это однострочный оператор If…Then: If Condition Then Statements
Condition – любое логическое выражение, a Statements – один, несколько или ни одного оператора VBA; все операторы должны помещаться в одной и той же строке. При выполнении подобного оператора VBA сначала оценивает логическое выражение, представленное с помощью Condition; если это логическое выражение равно True, то выполняется оператор (или операторы) после ключевого слова Thenдо конца строки. Затем VBA возобновляет выполнение кода с первого оператора после строки, содержащей оператор If…Then. Если логическое выражение, представленное с помощью Condition, равно False, то выполняется первый оператор в строке после строки, содержащей оператор If…Then, без выполнения альтернативной ветви.
Можно включать несколько операторов VBA в одну строку, отделяя каждый из них двоеточием (:), как показано в следующем примере: Statements1 : Statements2 : … : StatementsN
Однако строки со многими операторами трудно читать и понимать. Обычно следует помещать только один оператор в каждую строку.
Вторая форма синтаксиса оператора If…Thenназывается блоком (block) оператора If. В блоке оператора If…Thenусловие и операторы записываются в отдельных строках, как показано в следующей синтаксической форме: If Condition Then Statements End If
ключевые слова End Ifуказывают VBA, что достигнут конец альтернативной ветви операторов. Ключевые слова End Ifдолжны появляться в отдельной строке, хотя в эту строку можно включать конечный комментарий.
Оператор If…Thenдает возможность задавать одну альтернативную ветвь операторов в процедуре. Однако часто бывает необходимо выбрать одну из двух различных ветвей операторов в зависимости от определенного условия. Для этого VBA предоставляет операторы If…Then…Elseи If…Then…ElseIf.
VBA-оператор If…Then…Elseимеет две формы: однострочную и блочную.
Sub pr()
Dim i As Integer
Dim f As Single
n = InputBox("Введите n")
f = 1
For i = 1 To n Step 1
f = f * (1 + 1 / i ^ 2)
Next i
MsgBox f
End Sub
№16 Циклы в Visual Basic for Application.
Оператор цикла For … Next
For счетчик = начало To конец [Step шаг]
(операторы)
Next счетчик
Оператор цикла Do … Loop
Do While (условие)
(операторы)
Loop
Do Until (условие)
(операторы)
Loop
Do
(операторы)
Loop While условие
Do
(операторы)
Loop Until условие
Sub pr()
Dim m(6) As Single
Dim i As Integer
Dim s As Single
For i = 0 To 6 Step 1
m(i) = Val(InputBox("input znach"))
Next i
s = 0
For i = 0 To 6 Step 1
s = s + m(i)
Next i
s = s / 7
MsgBox s
End Sub
№17 Массивы в Visual Basic for Application.
Массив – это набор элементов одинакового типа, имеющих общее имя.
Нумерация элементов массива начинается с нуля.
В двухмерных массивах сначала указываются строки, а затем столбцы.
Массивы есть статистические и динамические.
Объявление массивов:
Dim m1(50) as integer
Dim m2(10,20) as integer
Dim m3(10 to 25, 30 to 40) as integer
Элементам массива можно присваивать данные например:
M1(24)=5
Динамические
Dim m1()
При использовании динамического массива необходимо использовать оператор ReDim
Например
ReDim M1(5)
Для того чтобы содержимое массива при переопределении не уничтожалось используется ключевое слово Preserve
Dim m() as single……….
ReDim m(1 to 10, 1 to 20)
………
ReDim Preserve m(1 to 10, 1 to 50)
Sub pr()
Dim a() As Single
Dim i, n As Integer
n = InputBox("Введите количество элементов в массиве")
ReDim a(n)
For i = 0 To n Step 1
a(i) = InputBox("Введите элемент массива")
Next i
For i = 1 To n Step 2
MsgBox a(i)
Next i
End Sub
№18 Записи в Visual Basic for Application.
Язык VBA позволяет создавать собственные, определенные пользователем типы данных, состоящие из одного или нескольких элементов. Определив пользовательский тип данных, вы получаете возможность использовать, переменны соответствующего типа, которые по своей структуре напоминают записи в базе данных. В языке VBA для работы с записями подобной базы данных удобнее всего объявить массив данных пользовательского типа. Для объявления пользовательского типа данных используется оператор Type … End Type
Type Сотрудник
ТабНомер as Integer Фамилия as String Имя as String Отчество as String Адрес as String End Type
Как только тип данных пользователя определен, он становится доступным для определения переменных и массивов. Например, объявить переменную пользовательского типа можно с помощью обычного оператора Dim.
Dim Экономист As Сотрудник
Экономист (1 to 10) as Сотрудник
Для того чтобы получить доступ к элементу, входящему в состав пользовательского типа данных, необходимо идентифицировать этот элемент указанием имени переменной, после которой ставится точка, а затем указывается имя требуемого элемента.
Экономист.Фамилия=”Иванов”
Экономист.Имя=”Иван”
Экономист.Отчество=”Иванович”
Для сокращения записи подобных операторов удобно использовать оператор With … End With.
With Экономист .Фамилия=”Иванов” .Имя=”Иван” .Отчество=”Иванович” End With
Sub pr()
Dim m(1, 1) As Single
Dim i, j As Integer
Dim s As Single
For i = 0 To 1 Step 1
For j = 0 To 1 Step 1
m(i, j) = Val(InputBox("input znach"))
Next j
Next i
s = 0
For i = 0 To 1 Step 1
For j = 0 To 1 Step 1
s = s + m(i, j)
Next j
Next i
MsgBox s
EndSub
№19 Работа с файлами в Visual Basic for Application.
Работа с файлами в программе на языке VBA предусматривает выполнение следующих действий:
1.Открытие файла;
2.Чтение из файла или запись в файл;
3.Закрытие файла.
В VBA можно работать с тремя различными типами файлов:
1.Файл последовательного доступа представляют собой тестовый файл состоящий из строк переменной длины, разделенных специальными символами. Эти строки принято называть записями.
2.Файлы произвольного доступа состоят из записей фиксированной длины.
3.Бинарные файлы представляют собой сплошной поток байтов.
Для того чтобы открыть файл используется оператор Open:
Open Путь For Режим as [#] Номер_файла
Путь определяет полный путь к файлу который необходимо открыть.
Режим задает режим доступа к файлу.
Append – при последовательном доступе. Если файл существует то данные дописываются в конец. Если файл не существует, то он создается заново.
Input – при последовательном доступе. Используется для чтения файла.
Output – при последовательном доступе. Используется для записи данных в файл. Если файл существует, то он удаляется, если нет файла то он создается снова.
Random – при произвольном доступе. Используется для чтения и записи данных в файл.
Binary – при бинарном доступе. Для чтения и записи данных в файл.
Номер_файла – может принимать любое значение от 1 до 511, которое еще не было присвоено другому файлу.
Для записи данных в файл используется оператор Write #
Write #Номер_файла, [Список_Вывода]
Для считывания данных из файла последовательного доступа используется оператор Input #
Input # Номер_Файла, Список_Переменных
Для записи текста в файл можно использовать оператор Print #
Print #Номер_файла, [Список_Вывода]
Оператор Line Input # предназначен для чтения из последовательного файла по одной строке текста.
Line Input #Номер_файла, переменная
Sub pr()
Dim a(1, 1) As Single
Dim i, j As Integer
Dim s As Single
For i = 0 To 1 Step 1
For j = 0 To 1 Step 1
a(i, j) = InputBox("Введите элемент массива")
Next j
Next i
s = 0
For i = 0 To 1 Step 1
For j = 0 To 1 Step 1
If i = j Then
s = s + a(i, j)
End If
Next j
Next i
MsgBox s
End Sub
№20 Элементы диалоговых окон в Visual Basic for Application.
Поьзовательскте диалоговые окна создаются в редакторе VBA как экранные формы, представляющие собой объекты класса UserForm. Такая экранная форма – форма пользователя – состоит из окна формы и нескольких специфических элементов управления, размещенных в этом окне. Все формы, как и любые элементы управления в форме, – это полноценные объекты VBA.
Для создания в проекте VBA новой формы пользователя необходимо активизировать это проект в окне проектов и либо выбрать команду меню Insert – UserForm редактора VBA. При этом новая форма появится в специально созданном для нее окне. Рядом с формой будет отображена панель элементов управления Toolbox – специальная панель инструментов, содержащая кнопки, с помощью которых соответствующие элементы управления можно разместить в созданной форме. На поверхности окна отображается сетка. Эта сетка помогает выравнивать и контролировать размер элементов управления, помещенных на форму. Сетка из точек отображается в форме только в режиме разработки.
Элементы формы пользователя:
1.Диалоговое окно UserForm – это пустая форма пользователя, для которой можно менять размер, положение на экране, задавать цвет ее фона и размещать на ней элементы управления, предназначенные для выполнения тех или иных функций.
2.Окно Toolbox, расположенное справа от окна формы пользователя, содержит единственную вкладку Controls, где находятся кнопки, представляющие все типы элементов управления, которые могут быть помещены на форму.
3.После щелчка мыши по форме пользователя в окне свойств отображаются свойства формы как текущего выбранного объекта. Если выбрать в форме один из ее элементов управления, то в окне Properties будут представлены свойства данного элемента управления. В окне свойст имеются две вкладки, на каждой из которой отображается один и тот же набор свойств: на вкладке Alphabetic (По алфавиту) эти свойства упорядочены по алфавиту, а на вкладке Categorized те же свойства сгруппированные по категориям. На каждой из этих вкладок слева указываются имена свойств, а справа от каждого имени – его текущее значения. При выборе некоторого свойства его значение автоматически отображается в поле, позволяющем это значение изменить, но только в пределах набора допустимых значений данного свойства.
4.На панели инструментов окна Project слева находятся две кнопки View Code и View Object. Кнопка View Code позволяет отобразить для текущей формы окно программного кода, содержащее текст всех ее подпрграмм, т.е. методов и событий. Щелчок на кнопке View Object позволяет перейти в окно визуального представления формы.
Отображение формы на экране выполняется в два этапа:
1.Загрузка формы в оперативную память компьютера;
2.Отображение загруженной формы на экране.
Для открытия формы используется метод Show, а для закрытия Hide.
Sub pr()
Dim a() As Single
Dim i, n, s As Integer
n = InputBox("Введите количество элементов в массиве")
ReDim a(n)
s = 0
For i = 0 To n Step 1
a(i) = InputBox("Введите элемент массива")
Next i
For i = 0 To n Step 1
If a(i) Mod 2 = 0 Then
s = s + a(i)
End If
Next i
MsgBox s
End Sub
№21 Элементы управления в Visual Basic for Application.
Объект UserForm может содержать те же элементы управления, что и находящиеся в диалоговых окне Excel или других приложений Windows. Элементы управления (controls) – это элементы диалогового окна, которые дают возможность пользователю взаимодействовать с программой. Они включают в себя кнопки-переключатели, текстовые поля, линейки прокрутки, командные кнопки и так далее.
1.Выбор объекта (Select Object) – переключает форму в режим выбора элементов управления, уже присутствующих в ней.
2.Надпись (Label) – добавляет в форму надпись.
3.Поел (TextBox) – Добавляет в форму поле ввода.
4.Поле со списком (ComboBox) – добавляет в форму поле ввода с раскрывающимся списком.
5.Список (ListBox) – добавляет в форму поле обычного списка
6.Флажок (CheckBox) – добавляет в форму флажок опции
7.Переключатель (OptionButton) – добавляет в форму отдельную кнопку переключения
8.Выключатель (ToggleButton) – добавляет в форму кнопку выключения.
9.Рамка (Frame) – добавляет в форму рамку
10.Кнопка (CommandButton) – добавляет в форму командную кнопку
11.Набор вкладок (TabStrip) – добавляет в форму набор вкладок
12.Набор страниц (MultiPage) – добавляет в форму набор страниц
13.Полоса прокрутки (ScrollBar) – добавляет в форму полосу прокрутки
14.Счетчик (SpinButton) – добавляет в форму счетчик
15.Рисунок (Image) – добавляет в форму элемент управления, предназначенный для размещения изображения.
Type Sotr
Fam As String
Name As String
Namber As String
Adr As String
End Type
Sub pr()
Dim inf(1 To 10) As Sotr
Dim i, n, n1 As Integer
n = Val(InputBox("Введите количество сотрудников"))
For i = 1 To n Step 1
With inf(i)
.fam = InputBox("Введите фамилию")
.name = InputBox("Введите имя")
.namber = Val(InputBox("Введите номер телефона"))
.adr = InputBox("Введите адрес")
End With
Next i
n1 = Val(InputBox("Введите номер сотрудника"))
MsgBox inf(n1).fam & Chr(13) & _
inf(n1).name & Chr(13) & _
inf(n1).namber & Chr(13) & _
Inf(n1).adr
End Sub
№22 Понятие об иерархической модели. Иерархическая модель Visual Basic for Application.
В реальном мире многие связи соответствуют некоторой иерархии, когда один объект выступает как родительский, а с ним связано множество подчиненных объектов. Связи между объектами описывают с помощью упорядоченного графа, дерева, которое упрощенно можно представить в следующем виде:
Возможен следующий пример организации данных типа “дерево”:
Основное отличие программ на языке Visual Basic for Applications (VBA) от обычных программ на Basic или Pascal, состоит в том, что наряду с обычными переменными и константами, эти программы манипулируют готовыми объектами приложений Microsoft Office, такими, например, как документы, абзацы, строки и слова Word; или рабочие книги, рабочие листы и диапазоны ячеек Excel. Чтобы писать программы на VBA, нужно хорошо представлять себе функциональные возможности таких объектов, свойства, которыми они обладают, способы воздействия на них. Объектная модель Microsoft Office содержит множество различных объектов, образующих достаточно сложную иерархию. В каждом приложении используются как общие для всех объекты (объект Application - приложение, например), так и специфичные для данного приложения, которые в свою очередь образуют иерархию объектов данного приложения. Что понимается в VBA под объектом? Объектами (Objects) в VBA называются изменяемые элементы приложения или документа (например, слова, абзацы, сноски или колонтитулы документа Word, ячейки, рабочие листы, диаграммы рабочей книги Excel, а также и сами приложения Office). То есть объектом VBA считается некоторый элемент, который можно отобразить в окне приложения и, главное, на который можно воздействовать некоторым образом, изменяя его состояние. Например, диапазон ячеек рабочего листа можно увидеть в окне, и можно изменить его состояние, введя в ячейки этого диапазона данные, сменив цвет ячеек, используемый шрифт или иные характеристики. Таким образом, диапазон ячеек — это объект. Может возникнуть вопрос — что же из видимых в окне элементов не является объектом? Ведь приложения Office в такой большой степени поддаются настройке пользователем, что практически все, что вы можете увидеть в окне приложения, можно тем или иным образом изменить. Тем не менее существуют элементы окна приложения, не являющиеся объектами. Например, кнопки Свернуть окно и Развернуть окно не являются объектами. Можно пользоваться этими кнопками, но нельзя изменить их. Напротив, само окно рабочей книги является объектом, поскольку оно может быть свернуто или развернуто с помощью этих кнопок.
Существуют сотни самых разнообразных объектов VBA, многие из которых объединяются в семейства объектов. В каждом из приложений Office объекты существуют не просто сами по себе, а образуют многоуровневую структуру — некоторые объекты содержатся в других объектах. Удобно представлять эту иерархию объектов в виде своеобразного "древа вложенностей", так как иерархия объектов Microsoft. Только в одном Excel их более сотни.
Office образована на основании отношения "часть-целое" в отличии от традиционных объектно-ориентированных языков программирования, поддерживающих "родовидовые" иерархии. Для того чтобы правильно обращаться к объектам, нужно понимать эту иерархию, хорошо представлять себе, на каком уровне иерархии находится конкретный объект. Некоторые объекты могут располагаться в разных местах иерархического дерева объектов, на разных его уровнях.
Type Abonent
Fam As String
Name As String
Namber As String
Adr As String
End Type
Sub pr()