- •Работа с данными таблиц ms Excel и данными документа ms Word. Вложенные циклы; Работа с двумерными массивами;
- •1.1Примеры обращения к данным в документах и таблицах:
- •1.1.1Программа устанавливает полужирный шрифт Arial 12 пт. В выделенных ячейках.
- •1.2.2Вычислить суммы элементов над главной, над побочной, под главной и под побочной диагоналями и на диагоналях.
- •2Процедуры и функции.
- •2.1Процедура
- •2.2Функция
- •2.3Переход в подпрограмму и возвращение из подпрограммы
- •2.4Вызов процедуры
- •2.5Рекурсивные процедуры и функции
- •2.6Область определения переменной
- •2.7Время жизни переменной
- •2.8Использование функций пользователя на листе Excel
- •3Задания
Лабораторная работа №5
Работа с данными таблиц ms Excel и данными документа ms Word. Вложенные циклы; Работа с двумерными массивами;
1.1Примеры обращения к данным в документах и таблицах:
1.1.1Программа устанавливает полужирный шрифт Arial 12 пт. В выделенных ячейках.
Sub FormatText()
With Selection.Font
.Name=”Arial”
.FontStyle=”Полужирный”
.Size=12
.Strikethrough=False
.Superscript= False
.Subscript= False
.Italic = False
.Underline=xlUnderlineStyleNone
.ColorIndex=xlAutomatic
End With
End Sub
Эта программа использует оператор With, который позволяет выполнять несколько операторов для единого объекта, не указывая этот объект в каждом из операторов, а только один раз после слова With. В данном случае объектом является шрифт выделенного фрагмента таблицы. Операторами в данном случае являются установки нужных нам свойств шрифта – название, стиль шрифта, размер, зачеркивание, верхний и нижний индекс, курсив, стиль подчеркивания, цвет. При этом, для свойств, про которые можно сказать: присутствует или отсутствует (например, курсив), признаком отсутствия будет значение – False (ложь), а присутствия – True (истина).
1.1.2Способы обращения к ячейкам по полному имени.
Sub stolen()
Application.Workbooks("Lab5Vba.xls").Worksheets("Лист1").Range("A11") = 10
Application.Workbooks("Lab5Vba.xls").Worksheets("Лист1").Cells(12, 1) = 10
End Sub
1.1.3Формирование адреса ячейки по введённым данным.
Sub RNN()
Dim a As Integer, b As String
Set tr1 = Rows("2:" & LTrim(Str([a1])))
Set tr2 = Range("a1:c" & LTrim(Str([a1] + 10)))
Set tr3 = Union(tr1, tr2)
tr3.Select
End Sub
Sub RNN2()
Dim a As Integer, b As String
Range(Cells(1, 1), Cells(5, 5)).Select
a = [b1]
b = LTrim(Str([a1])) & ":" & LTrim(Str([b1]))
Rows(b).Select
End Sub
1.2Примеры работы с двумерными массивами:
1.2.1Программа выполняет транспонирование матрицы 10х10, находящейся на листе MS Excel:
Sub Trans()
Dim A(1 To 10, 1 To 10), B(1 To 10, 1 To 10) As Integer ‘Объявляем два массива 10х10
For i = 1 To 10 ‘цикл по I от 1 до 10 (перечисляются номера столбцов)
For j = 1 To 10 ‘ цикл по j от 1 до 10 (перечисляются номера строк)
A(i, j) = Cells(i, j) ‘данные вносятся из текущего листа Excel в массив
Next j ‘конец цикла по j
Next I ‘конец цикла по i
For i = 1 To 10 ‘
For j = 1 To 10 ‘
B(i, j) = A(j, i) ‘В массив B записывается транспонированная матрица из массива A – обратите внимание на индексы
Next j ‘
Next i ‘
For i = 1 To 10 ‘
For j = 1 To 10 ‘
Cells(i, j) = B(i, j) ‘массив B выводится в то же место на текущем листе Excel
Next j ‘
Next I ‘
End Sub ‘
1.2.2Вычислить суммы элементов над главной, над побочной, под главной и под побочной диагоналями и на диагоналях.
Sub summs()
Dim s(1 To 6) As Single, i, j As Integer
Dim m As Variant
m = Array("overb", "underb", "over2", "under2", "onb", "on2")
n = InputBox("input matrix size")
For i = 1 To 6
s(i) = 0
Next i
For i = 1 To n
For j = 1 To n
If (i < j) Then s(1) = s(1) + Cells(i, j) 'overbase
If (i > j) Then s(2) = s(2) + Cells(i, j) 'underbase
If (i + j) < (n + 1) Then s(3) = s(3) + Cells(i, j) 'over2
If (i + j) > (n + 1) Then s(4) = s(4) + Cells(i, j) 'under2
If (i = j) Then s(5) = s(5) + Cells(i, j) 'OnBase
If (i + j) = (n + 1) Then s(6) = s(6) + Cells(i, j) 'On2
Next j
Next i
For i = 1 To 6
Cells(i, n + 2) = s(i)
Cells(i, n + 3) = m(i - 1)
Next i
End Sub