
- •Министерство образования Российской Федерации
- •Введение
- •Общие сведения
- •Интерфейс пользователя vba
- •Лабораторная работа №1 знакомство со средой программирования excel vba
- •Указания по выполнению
- •Лабораторная работа №2 создание новых диалоговых окон на основе форм пользователя
- •Указания по выполнению
- •Лабораторная работа №3 команды выполнения действий по условиям
- •Указания по выполнению
- •Лабораторная работа №4 организация многозначных ветвлений в программе
- •Указания по выполнению
- •Указания по выполнению
- •Лабораторная работа №6 программирование вложенных циклов
- •Указания по выполнению
- •Лабораторная работа №7 вложенные команды выполнения действий по условиям
- •Указания по выполнению
- •Лабораторная работа №8 обработка строковых выражений в текстовом редакторе word
- •Указания по выполнению
- •Лабораторная работа №9 создание форм пользователя для задачи перевода единиц длины и массы в excel
- •Указания по выполнению
- •Лабораторная работа №10 создание приложения для расчета экономических показателей
- •Лабораторная работа №11 одномерные динамические массивы
- •Указания по выполнению
- •Лабораторная работа №12 работа со списками в excel
- •Указания по выполнению
- •Литература
- •Объекты excel vba
- •Операторы vba
- •Типы данных vba
- •Команды vba Описательные команды
- •Исполнительные команды
- •Функции работы с числами
- •Описание функций работы с числами:
- •Основные функции обработки строк
- •Описание функций обработки строк:
- •Варианты индивидуальных заданий к лабораторным работам
- •Варианты заданий к лабораторной работе №3
- •Варианты заданий к лабораторной работе №6
- •Варианты заданий к лабораторной работе №8
- •Варианты заданий к лабораторной работе №10 Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Варианты заданий к лабораторной работе №11
- •Варианты заданий к лабораторной работе №12
- •Оценка результатов выполнения индивидуальных заданий к лабораторным работам
- •Оглавление
Лабораторная работа №6 программирование вложенных циклов
Цель: Освоить составление циклических программ с вложенными циклами.
Указания по выполнению
1. В данной лабораторной работе необходимо составить макрос, который в выделенном диапазоне ячеек подсчитывает количество положительных, нулевых и отрицательных значений, записывает результаты в смежную с диапазоном колонку и выделяет цветом ячейки с положительными значениями. Например, на рис. 6.1 представлен результат выполнения макроса в случае, если выделен диапазон ячеек В2:С5.
|
А |
В |
С |
D |
Е |
1 |
|
|
|
|
|
2 |
|
1,5 |
-21 |
3 |
Количество положительных значений |
3 |
|
0 |
6 |
2 |
Количество нулевых значений |
4 |
|
9 |
0 |
3 |
Количество отрицательных значений |
5 |
|
11 |
-7 |
|
|
Рис. 6.1. Результаты обработки диапазона В2:С5
Для этого:
а) перейдите из Excel в среду программирования VBA;
б) добавьте в рабочую книгу новый модуль и в окне редактирования модуля наберите команды:
Public Sub Диапазон_ячеек()
' В макросе используются следующие переменные:
' КР - количество положительных значений
' KN — количество нулевых значений
' КО — количество отрицательных значений
' NR - число строк в выделенном диапазоне
' NC — число колонок в выделенном диапазоне
' NumO/Row - номер строки первой ячейки диапазона
' NumOfCol - номер колонки первой ячейки диапазона
' Item - значение текущей ячейки
' i - номер текущей строки диапазона
' j - номер текущей колонки диапазона
Dim КР As Integer, KN As Integer, КО As Integer
Dim NR As Integer, NC As Integer
Dim NumOfRow As Integer, NumOfCol As Integer Dim Item As Variant, i As Integer, j As Integer NR = Selection.Rows.Count NC = Selection.Columns.Count NumOfRow = Selection.Row NumOfCol = Selection.Column ' Цикл For i... Next i является внешним по ' отношению к циклу Forj ... Nextj For i = 1 To NR ' Цикл по строкам
' Цикл Forj ... Nextj является вложенным
' по отношению к циклу For i... Next i
Forj = 1 To NC ' Цикл по колонкам
Item = Selection.CeIls(i, j)
If IsNumeric(Item) Then ' Если значение в ячейке - числовое
If Item > 0 Then
КР = КР+1
Selection.Cells(i, j).Font.Color = vbRed
End If
If Item = 0 Then KN = KN + 1
If Item < 0 Then КО = КО + 1
End If
Nextj
Next i
' Запись результатов на рабочий лист
' в смежную с выделенным диапазоном колонку Cells(NumOfRow, NumOfCol + NC) = КР
Cells(NumOfRow, NumOfCol + NC + 1) = _
"Количество положительных значений" Cells(NumOfRow + 1, NumOfCol + NC) = KN Cells(NumOfRow + 1, NumOfCol + NC + 1) = _
"Количество нулевых значений"
Cells(NumOfRow + 2, NumOfCol + NC) = КО Cells(NumOfRow + 2, NumOfCol + NC + 1) = _
"Количество отрицательных значений"
End Sub
Вернитесь в Excel, заполните различными данными диапазон ячеек A2:D6, выделите диапазон и выполните макрос. Как выглядит таблица после работы макроса?
Цикл Forj = 1 То NC ... Nextj является вложенным по отношению к циклу For i = 1 То NR ... Next i. Это означает, что вначале будут последовательно перебираться ячейки с номерами (1, 1), (1, 2) ... (1, NC) при i = 1, затем - (2, 1), (2, 2) ... (2, NC) при i = 2 ..., и т.д. до ячеек с номерами (NR, 1), (NR, 2) ... (NR, NC) при i = NR. Какое значение переменных i и] соответствует ячейке с адресом ВЗ?
Самостоятельно составьте макросы для решения задач из числа приведенных в приложении G согласно своего варианта.
Запишите составленные макросы в модуль, заполните различ ными данными диапазон ячеек СЗ:Е7 для первого макроса и G2:J5 для второго макроса и выполните каждый макрос, предварительно выделив нужный диапазон. Текст макросов, контрольные примеры и результаты приведите в отчете по лабораторной работе.
Контрольные вопросы и задания:
В какой переменной будут чаще изменяться значения (i или j) в макросе "Диапазон_ячеек"?
Какие изменения следует внести в макрос, чтобы вместо выделения числа цветом изменялся цвет фона ячейки?
Какие значения принимают переменные NR и NC в макросе, если выделить диапазон А1:С4?
Каким образом следует изменить команду "For i = 1 То NR", чтобы выбирать только нечетные строки выделенного диапазона?
Каким образом следует изменить команду "For j = 1 То NC", чтобы выбирать только четные колонки выделенного диапазона?
Объясните назначение команд составленного вами макроса.