Смекни!
smekni.com

Разработка приложений на языке VBA в среде MS EXCEL по обработке данных для заданных объектов (стр. 3 из 3)

'Заполнение тестового значения

Randomize - Инициализирует генератор случайных чисел. Если этот оператор не поместить перед функцией Rnd, то при каждом запуске приложения будут генерироваться одни и те же случайные числа.

For i = 1 To n

For j = 1 To n

A(i, j) = 20 * Rnd() - 10 - Возвращает Single значение, содержащее случайное число от 0 до 1.

Next j

Next i

Sheet3.Cells(3, 2) = " Матрица заполнена случайными тестовыми значениями "

For i = 1 To n

For j = 1 To n

Sheet3.Cells(i + 3, j) = A(i, j)

Next j

Next i

MsgBox ("Матрица А заполнена тестовыми значения (случайными числами)")

End If

If Sheet1.OptionButton4.Value = True Then

'Выбор обработки

Call Obrabotka – вызываем функцию «обработка».

End If

End Sub

В этой конструкции некоторые операторы выполняются только при условии, содержащееся в конструкции логическое выражение имеет значение True (истинно):

If Логическое_выражение Then Оператор

или сложнее

If Логическое_выражение Then
Группа_операторов
End If

В первом случает оператор может быть только один. Во втором сколько угодно (в том числе и один).

Далее…

Sub Cng_List(par As Boolean)

If par Then 'Активное

Sheet1.ListBox1.ForeColor = &H80000007

Sheet1.ListBox1.Enabled = True

Else 'Неактивное

Sheet1.ListBox1.ForeColor = &H80000013

Sheet1.ListBox1.Enabled = False

End If

End Sub

ListBox1 – элемент управления, префикс lst (При именовании элементов управления рекомендуется следовать стандартным соглашениям именования пользовательского интерфейса и элементов управления. Это позволяет упростить чтение и отладку программного кода. В именах элементов управления удобно проставлять префикс, однозначно указывающий на тип (класс) этого объекта.)

Sub Init()

Cng_List (False)

n = 0

For i = 1 To m

For j = 1 To m

A(i, j) = 0

Next j

Next i

Sheet2.Visible = xlSheetHidden

Sheet3.Visible = xlSheetHidden

End Sub

Sub InitS()

For i = 1 To m + 2

For j = 1 To m

ActiveSheet.Cells(i + 2, j) = ""

Next j

Next i

End Sub

Sub Button3_Click() ' ОК

n = Sheet2.Range("R2")

Open "C:\file1" For Output As #1

Write #1, n

For i = 1 To n

For j = 1 To n

If Sheet2.Cells(i + 3, j) = "" Then

A(i, j) = 0

Else

A(i, j) = Sheet2.Cells(i + 3, j)

End If

Write #1, A(i, j)

Next j

Next i

Close #1

MsgBox ("Матрица A записана в файл file1")

Call InitS

Sheet2.Visible = xlSheetVisible

Sheet1.Activate

Call Init

End Sub

Sub Button4_Click() ' Отмена

Sheet2.Visible = xlSheetVisible

Call InitS

Sheet1.Activate

Call Init

End Sub

Sub Button5_Click()

Call InitS

Sheet3.Visible = xlSheetVisible

Sheet1.Activate

Call Init

End Sub

Sub OutA() ' Вывод результата на экран

For i = 1 To n

For j = 1 To n

Sheet4.Cells(i + 3, j) = A(i, j)

Next j

Next i

MsgBox

End Sub

Sub getA() ' ввод матрицы из файла

For i = 1 To n

For j = 1 To n

If Sheet3.Visible = xlSheetHidden Then

MsgBox ("Введите матрицу А из файла")

Else

If Sheet3.Cells(i + 3, j) = "" Then

A(i, j) = 0 ' заполнение матрицы с клавиатуры

Else

A(i, j) = Sheet3.Cells(i + 3, j)

End If

End If

Next j

Next i

End Sub

Создание кнопок ОК, ОТМЕНА, заполнение матрицы в файл, а также вывод результатов на экран.

И, наконец, с помощью функции rab, мы проделываем все виды обработки.

Sub rab1(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = "Среднее значение элементов по строкам"

Sheet4.Range("G4") = "Строка"

Sheet4.Range("I4") = "Xcp"

For i = 1 To n

s = 0

Sheet4.Cells(i + 4, 7) = i

For j = 1 To n

s = s + A(i, j)

Next j

s = s / n

Sheet4.Cells(i + 4, 9) = s

Next i

End Sub

Sub rab2(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = "Среднее значение элементов по столбцу"

Sheet4.Range("G4") = "Столбец"

Sheet4.Range("I4") = "Xcp"

For j = 1 To n

s = 0

Sheet4.Cells(j + 4, 7) = j

For i = 1 To n

s = s + A(i, j)

Next i

s = s / n

Sheet4.Cells(j + 4, 9) = s

Next j

End Sub

Sub rab3(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = " Min элементы в строках"

Sheet4.Range("G4") = "Строка"

Sheet4.Range("I4") = "Min"

For i = 1 To n

x = A(i, 1) 'min

Sheet4.Cells(i + 4, 7) = i

For j = 2 To n

If x > A(i, j) Then

x = A(i, j)

End If

Next j

Sheet4.Cells(i + 4, 9) = x

Next i

End Sub

Sub rab4(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = "Min элементы по столбцам"

Sheet4.Range("G4") = "Столбец"

Sheet4.Range("I4") = "Min"

For j = 1 To n

x = A(1, j) 'min

Sheet4.Cells(j + 4, 7) = j

For i = 2 To n

If x > A(i, j) Then

x = A(i, j)

End If

Next i

Sheet4.Cells(j + 4, 9) = x

Next j

End Sub

Sub rab5(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = "Max элементы по строкам"

Sheet4.Range("G4") = "Строка"

Sheet4.Range("H4") = "Max"

For i = 1 To n

s = A(i, 1) 'max

Sheet4.Cells(i + 4, 7) = i

For j = 2 To n

If s < A(i, j) Then

s = A(i, j)

End If

Next j

Sheet4.Cells(i + 4, 9) = s

Next i

End Sub

Sub rab6(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = "Max элементы по

столбцам"

Sheet4.Range("G4") = "Столбец"

Sheet4.Range("H4") = "Max"

For j = 1 To n

s = A(1, j) 'max

Sheet4.Cells(j + 4, 7) = j

For i = 2 To n

If s < A(i, j) Then

s = A(i, j)

End If

Next i

Sheet4.Cells(j + 4, 9) = s

Next j

End Sub

Список использованной литературы

  • А.Васильев, А.Андреев. VBA в Office 2000. Учебный курс. С-Пб.: "Питер", 2001
  • Биллиг В.А. Средства разработки VBA-программиста. Офисное программирование. Том 1. М.: Издательско-торговый дом "Русская Редакция", 2001.
  • Биллиг В.А. Мир объектов Excel 2000. М.: Издательско-торговый дом "Русская Редакция", 2001.
  • В.И.Король. Visual Basic 6.0, Visual Basic for Applications 6.0. Язык программирования. Справочник с примерами. М.: Издательство КУДИЦ, 2000.