Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab5.doc
Скачиваний:
3
Добавлен:
14.08.2019
Размер:
90.62 Кб
Скачать

Лабораторная работа №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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]