Основы офисного программирования и язык VBA

       

Устанавливаем дополнительные ссылки


Public Sub Assign5() Dim Children( 1 To 2) As Child Dim Boy As Child, Girl As Child
'Создаем объекты Set Children(1) = New Child Set Children(2) = New Child 'Инициализируем их Children(1).Age = 10 Children(1).Name = "Александр" Children(2).Age = 7 Children(2).Name = "Мария" Debug.Print "Имя: ", Children(1).Name, "Возраст: ", Children(1).Age Debug.Print "Имя: ", Children(2).Name, "Возраст: ", Children(2).Age
'Утанавливаем дополнительные ссылки на существующие объекты Set Boy = Children(1) Set Girl = Children(2) Boy.Name = "Саша" Girl.Name = "Маша" 'Изменились сввойства объектов Debug.Print "Имя: ", Children(1).Name, "Возраст: ", Children(1).Age Debug.Print "Имя: ", Children(2).Name, "Возраст: ", Children(2).Age
'Удаляем одну из ссылок, но объект остается Set Children(1) = Nothing Set Children(2) = Nothing Debug.Print "Имя: ", Boy.Name, "Возраст: ", Boy.Age Debug.Print "Имя: ", Girl.Name, "Возраст: ", Girl.Age
End Sub
Пример 7.1.
Закрыть окно




Public Sub MinMax1(ByVal X As Integer, ByVal Y As Integer, _ Min As Integer, Max As Integer) 'Оператор If в одну строку If X > Y Then Max = X: Min = Y Else Max = Y: Min = X
End Sub
Public Sub MinMax2(ByVal X As Integer, ByVal Y As Integer, _ Min As Integer, Max As Integer) 'Оператор If в виде блока If X > Y Then Max = X Min = Y Else Max = Y Min = X End If
End Sub
Public Sub If1() Dim Max As Integer, Min As Integer
Call MinMax1(2 + 3, 2 * 3, Min, Max) Debug.Print Max, Min Call MinMax2(2 + 3, 2 * 3, Min, Max) Debug.Print Max, Min End Sub
Пример 7.2.
Закрыть окно






Public Sub BoyOrMan() Dim Boy As New Child Dim Person As New Man Dim SomeBody As Object Dim Answer As Integer
Boy.Age = 10: Boy.Name = "Александр" Person.Age = 21: Person.Name = "Александр" Answer = InputBox("Введите число от 10 до 20", "Возраст", 15) If Answer > 15 Then Set SomeBody = Person Else: Set SomeBody = Boy End If
If TypeOf SomeBody Is Child Then Debug.Print "Это мальчик!" ElseIf TypeOf SomeBody Is Man Then Debug.Print "Это Мужчина" Else Debug.Print "Не знаю, кто это" End If End Sub
Пример 7.3.
Закрыть окно




Public Sub For1() Dim A(1 To 5, 1 To 5) As Integer Dim B(1 To 5, 1 To 5) As Integer Dim C(1 To 5, 1 To 5) As Integer Dim I As Integer, J As Integer, K As Integer Dim Res As String ' Инициализация матриц A и B случайными числами в интервале [-10, +10] VBA.Randomize For I = 1 To 5 For J = 1 To 5 'Получение случайного числа Rnd и преобразование в целое A(I, J) = Int(21 * Rnd) - 10 Next J Next I For I = 1 To 5 For J = 1 To 5 B(I, J) = Int(21 * Rnd) - 10 Next J Next I
'Вычисление произведения матриц For I = 1 To 5 For J = 1 To 5 C(I, J) = 0 For K = 1 To 5 C(I, J) = C(I, J) + A(I, K) * B(K, J) Next K Next J Next I
Res = "No" C(2, 2) = 0 'Проверка на нулевое значение For I = 1 To 5 For J = 1 To 5 If C(I, J) = 0 Then Debug.Print "Индексы: ", I, J Res = "Yes" Exit For End If Next J Next I Debug.Print Res End Sub
Пример 7.4.
Закрыть окно




Public Sub Loop1() Const Size = 5 Dim X() As Integer Dim i As Integer Dim Found As Boolean Const pat = 7 'Инициализация случайными числами в интервале [1 - 10] ReDim X(1 To Size) Randomize For i = 1 To Size X(i) = Int(11 * Rnd) Next i
'Поиск по образцу с проверкой в начале цикла i = 1: Found = False Do While (i <= Size) And (Not Found) If X(i) = pat Then Found = True Else: i = i + 1 End If Loop If Found Then Debug.Print "Найден образец!" Else: Debug.Print "Образец не найден!" End If
'Поиск по образцу с проверкой в конце цикла i = 1: Found = False Do If X(i) = pat Then Found = True Else: i = i + 1 End If Loop Until Found Or (i = Size + 1) If Found Then Debug.Print "Найден образец!" Else: Debug.Print "Образец не найден!" End If
'Поиск с барьером ReDim Preserve X(1 To Size + 1) X(Size + 1) = pat i = 1 Do If X(i) = pat Then Exit Do i = i + 1 Loop If i = Size + 1 Then Debug.Print "Образец не найден!" Else: Debug.Print "Образец найден!" End If End Sub
Пример 7.5.
Закрыть окно



Содержание раздела