VBA. Основные конструкции

Содержание

Слайд 2

Типы Integer Double String Boolean Date Variant Type Point x as

Типы

Integer
Double
String
Boolean
Date
Variant
Type Point
x as Double
y as Double
End Type

Слайд 3

Переменные Dim x Dim y as Integer Dim z as New

Переменные

Dim x
Dim y as Integer
Dim z as New Collection
Dim a(1 to

10) as Double
Dim matrix(1 to 3, 1 to 3) as Double
Dim chart as Chart
Set chart = New Chart
Dim p as Point
p.x = 1
p.y = 2
Слайд 4

Объекты Пример 1 Dim r As Range Set r = Range("A1")

Объекты

Пример 1
Dim r As Range
Set r = Range("A1")
r.Value = 5
r.AddComment ("Test")
Set

r = Range(“A1:A10”) r.Cells(1,1) = 6
X = r.Cells(1,1)
Пример 2
Dim r As Range
Set r = Range("A1")
With r
.Value = 5
.AddComment ("Test")
End With
Слайд 5

Процедуры Sub ( [Parameters] ) … End Sub Процедура не возвращает

Процедуры

Sub ( [Parameters] )

End Sub
Процедура не возвращает значений
Пример
Sub PrintLog

(text as String)
Debug.Print Date & ": " & text
End Sub
PrintLog "Работа завершена"
Слайд 6

Функции Function ( [Parameters] ) as … = End Function Пример

Функции

Function ( [Parameters] ) as

=
End Function
Пример
Function

axpy (a as Double, x as Double, y as Double) as Double
axpy = a*x+y
End Function
PrintLog "5*2+3=" & axpy(5,2,3)
Слайд 7

Операторы

Операторы

Слайд 8

Условный оператор If Then … [ Else | ElseIf Then …

Условный оператор

If Then

[
Else | ElseIf Then

]
End If
Пример
If a

> b then
PrintLog a
ElseIf b > c then
PrintLog b
Else
PrintLog c
End If
Слайд 9

Цикл For For = To [ Step ] … Next [

Цикл For

For = To [ Step ]

Next []
Пример
For

i=1 To 10 Step 2
Debug.Print i
Next
Слайд 10

Цикл For Each For Each [ As ] In … Next

Цикл For Each

For Each [ As ] In


Next
Пример
Dim a() As Variant
a = Array(1, 2, 3, 4, 5)
For Each x In a
Debug.Print x
Next
Слайд 11

Цикл Do Do [ While ] … [ Exit Do ]

Цикл Do

Do [ While ]

[ Exit Do ]



Loop
Пример
i = 1
Do While i < 10
Debug.Print i
i = i + 2
Loop
Слайд 12

Пример1 : поиск корней ax2+bx+c=0

Пример1 : поиск корней ax2+bx+c=0

Слайд 13

Чтение программ Function ToString(value) If IsArray(value) Then For Each x In

Чтение программ

Function ToString(value)
If IsArray(value) Then
For Each x In value

ToString = ToString & CStr(x) & " "
Next
Else
ToString = CStr(value)
End If
End Function
Function SolveSquareEquation(a, b, c)
D = b^2 - 4*a*c
If D < 0 Then
SolveSquareEquation = "No real roots"
ElseIf Abs(D) < 0.000000001 Then ' Сравнение D = 0
SolveSquareEquation = -b / (2 * a)
Else
DS = sqr(D)
SolveSquareEquation = Array((-b+DS)/(2*a), (-b-DS)/2*a)
End If
End Function
Sub test()
roots = SolveSquareEquation(2,3, -4)
Debug.Print ToString(roots)
End Sub
Слайд 14

Сортировка выбором Массив A(1..N) Массив A(1..N) Для i=1 до N-1 Элементы

Сортировка выбором

Массив A(1..N)

Массив A(1..N)

Для i=1 до N-1

Элементы A(1)..A(i) отсортированы

Найти минимальный элемент
Поменять

его местами с первым

Для j=i+1 до N

iMin=i

A(j) < A(iMin)

iMin=j

iMin – индекс минимального элемента в A(i)..A(j)

Обменять A(i) и A(iMin)

да

нет

temp = A(i)
A(i)=A(iMin)
A(iMin)=temp

Слайд 15

Чтение программ: сортировка выбором Function ToString(value) … End Function Sub SelectionSort(A)

Чтение программ: сортировка выбором

Function ToString(value)

End Function
Sub SelectionSort(A)
For I =

LBound(A) To UBound(A) - 1
iMin = I
For J = I + 1 To UBound(A)
If A(J) < A(iMin) Then iMin = J
Next
' Обмен
temp = A(I)
A(I) = A(iMin)
A(iMin) = temp
Next
End Sub
Sub test()
A = Array (8, 7, 3, 6, 2, 5, 9, 0, 1)
SelectionSort A
Debug.Print ToString(A)
End Sub
Слайд 16

Поиск корней: F(x)=0 L,R DO x=(L+R)/2 F(x)=0? x Sign(F(x)) = Sign(F(L))

Поиск корней: F(x)=0

L,R

DO

x=(L+R)/2

F(x)=0?

x

Sign(F(x)) = Sign(F(L))

L=x

R=x

да

да

нет

нет

Слайд 17

Пример2 : поиск корней ax2+bx+c=0

Пример2 : поиск корней ax2+bx+c=0