РГР_2
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ЭКОНОМИКИ И УПРАВЛЕНИЯ «НИНХ»
Институт |
Прикладной информатики |
Кафедра |
Экономической информатики |
Расчетно-графическая работа
Учебная дисциплина: |
Информатика |
Тема: |
«Разработка программ на VBA в среде Excel» |
Номер варианта РГР: |
15 |
Номер группы: |
1721 |
Ф.И.О студента: |
Мельникова А.И. |
|
|
Проверил(а): |
Степанова Т.И. |
Оценочное заключение: |
|
Новосибирск 2012
Задание 1. Разветвляющиеся алгоритмы. Составить блок-схему и программу. В клетке С1 записано число. Определите его знак. Выведите сообщение о знаке в диалоговом окне. .Если число в клетке С1 отрицательное, очистить эту клетку.
1
начало
2
«С1»>0
нет
4
«С1»<0
да
нет
3
вывод
число в клетке да
положительное
5
Очистить «С1»
вывод
6
число в клетке
отрицательное
7
вывод
число в клетке = 0
8
конец
Программа:
Private Sub pr1()
If Cells(1, 3) > 0 Then
MsgBox "Число в клетке положительное"
ElseIf Cells(1, 3) < 0 Then
Cells(1, 3).Clear
MsgBox "Число в клетке отрицательное"
Else
MsgBox "Число в клетке = 0"
End If
End Sub
Задание 2. Циклические алгоритмы. Составить блок-схему и программу. В клетки диапазона D10:D30 записать сумму соответствующих ячеек столбцов А, В и С (например, А10+В10+С10 - в D10).
1
начало
i=10,30
2
3
D(i)=A(i)+B(i)+C(i)
4
конец
Private Sub pr2()
Dim a(10 To 30, 1 To 3) As Integer
For i = 10 To 30
For j = 1 To 3
a(i, j) = Int(Rnd * 100) - 50
Cells(i, j) = a(i, j)
Next
Next
For i = 10 To 30
Cells(i, 4) = Cells(i, 1) + Cells(i, 2) + Cells(i, 3)
Next
End Sub
Задание 3. Функции пользователя. Создать функцию пользователя, которая возвращает следующий результат: при заданном аргументе n определяет сумму отрицательных элементов в числовой последовательности: .
K(n)
1
K=0
2
a(1)=Cos(2)/2
3
a(2)=Sin(3)/5
4
i=3,n
5
6
a(i)=a(i-1)-2*a(i-2)
7
i=1,n
a(i)<0
8
нет
да
K=K+a(i)
9
10
Возврат
Function K(n)
Dim n As Integer
Dim K As Single
ReDim a(1 To n) As Single
K = 0
a(1) = Cos(2) / 2
a(2) = Sin(3) / 5
For i = 3 To n
a(i) = a(i - 1) - 2 * a(i - 2)
Next
For i = 1 To n
If a(i) < 0 Then K = K + a(i)
Next
End Function
Задание 4. Пусть на рабочем листе задан некоторый двумерный массив натуральных чисел. Найти столбец, в котором число четных превышает число нечетных его элементов.
1
Начало
j=1 to 5
i=1 to 5
k=0: с=0
c=c+1
вывод
n
2
3
11
6
8
max=0
n=0
4
Конец
12
5
Cells(i, j) .Value Mod 2 = 0
да
нет
7
k=k+1
c>k and c>max
9
нет
да
10
max=c
n=j
Private Sub pr4()
Dim max, c, n, k As Integer
Dim a(1 To 7, 1 To 5) As Integer
For i = 1 To 7
For j = 1 To 5
a(i, j) = Int(Rnd * 100) - 50
Cells(i, j) = a(i, j)
Next
Next
max = 0
n = 0
For j = 1 To 5
k = 0: c = 0
For i = 1 To 7
If Cells(i, j).Value Mod (2) = 0 Then
c = c + 1
Else
k = k + 1
End If
Next
If c > k And c > max Then
max = c
n = j
End If
Next
MsgBox "Cтолбец, в котором число четных превышает число нечетных чисел:" & n
End Sub
Задание 5. Разработать форму для ввода данных в таблицу на рабочем листе Excel.
Форма:
Код программы:
Public Sub UserForm_Initialize()
ComboBox1.AddItem "100 г"
ComboBox1.AddItem "125 г"
ComboBox1.AddItem "150 г"
ComboBox1.AddItem "175 г"
ComboBox1.AddItem "200 г"
ComboBox1.AddItem "250 г"
ComboBox1.AddItem "300 г"
ComboBox1.AddItem "350 г"
ComboBox1.AddItem "400 г"
ComboBox1.AddItem "450 г"
ComboBox1.AddItem "500 г"
ComboBox1.Style = fmStyleDropDownList
End Sub
Public Sub CommandButton1_Click()
Dim Row As Integer
Row = Application.CountA(Sheets("Лист1").Range("A:A")) + 1
Dim Категория As String
Dim вес As String
With UserForm1
If .OptionButton1 = True Then Категория = "Салаты"
If .OptionButton2 = True Then Категория = "Закуски"
If .OptionButton3 = True Then Категория = "Супы"
If .OptionButton4 = True Then Категория = "Мясо"
If .OptionButton5 = True Then Категория = "Морепродукты"
If .OptionButton6 = True Then Категория = "Десерты"
End With
With Sheets("Лист1")
.Cells(Row, 1) = Категория
End With
Cells(Row, 2) = TextBox1
Cells(Row, 4) = TextBox2
With UserForm1
вес = .ComboBox1
End With
With Sheets("Лист1")
.Cells(Row, 3) = вес
End With
End Sub
Public Sub CommandButton2_Click()
End
End Sub
Модуль:
Sub Вычислить()
UserForm1.Show
End Sub