Изучите текст макроса
Листинг макроса ВозрастФормула
Sub ВозрастФормула()
ActiveCell.FormulaR1C1 = _
"=YEAR(TODAY())-YEAR(RC[-5])-IF(OR(MONTH(TODAY())<MONTH(RC[-5]),AND(MONTH(TODAY())=MONTH(RC[-5]),DAY(TODAY())<DAY(RC[-5]))),1,0)"
Selection.AutoFill Destination:=Range("G4:G13"), Type:=xlFillDefault
End Sub
Причем, значение xlFillDefault - приложение Microsoft Office Excel выбирает наиболее подходящий тип заполнения в соответствии с исходным диапазоном.
III. Написание макроса «ВозрастЧисло»
Необходимо самостоятельно написать макрос для расчета возраста в редакторе Visual Basic (VBA)
Function dhCalculateAge (datDate As Date) As Long
Dim lngAge As Long
' Находим разность между текущей датой и указанной (лет)
lngAge = DateDiff("yyyy", datDate, Date)
If DateSerial(Year(datDate) + lngAge, Month(datDate), _
Day(datDate)) > Date Then
' В этом году день рождения еще не наступил
lngAge = lngAge - 1
End If
dhCalculateAge = lngAge
End Function
Sub ВозрастЧисло()
Dim i As Integer
For i = 4 To 13
Cells(i, 8) = dhCalculateAge(Cells(i, 2))
Next i
End Sub
Рисунок 8 Таблица с результатами после выполнения макроса ВозрастЧисло()
IV. Написание макроса «ВозрастЦвет»
Отметим пациентов разной возрастной категории цветами для наглядности.
Таблица 1. Соответствие между категорией, возрастом и цветом
Категория | Возраст | Присваемый цвет |
«Пожилые» | от 60 и выше | коричневый |
«Взрослые» | от 18 до 60 | синий |
«Дети» | от 0 до 18 | зеленый |
Необходимо самостоятельно написать макрос для разделения на категории по возрасту в редакторе Visual Basic (VBA)
Задать цвет можно несколькими способами
1. явно
Font.Color = vbBroun
2. используя индекс цвета
ColorIndex = 53 (когда необходим оттенок цвета)
Создадим макрос для разделения на категории по возрасту с использованием «явного» цвета.
Sub ВозрастЦвета()
Dim i As Integer
For i = 4 To 13
If Cells(i, 8) < 19 Then
Cells(i, 8).Font.Color = vbGreen
ElseIf Cells(i, 8) < 61 Then
Cells(i, 8).Font.Color = vbBlue
Else
Cells(i, 8).Font.Color = vbBroun
End If
Next i
End Sub
Откорректируем созданный макрос, для категории «Пожилые» выберем светло коричневый (индекс = 53)
Sub ВозрастЦвета()
Dim i As Integer
For i = 4 To 13
If Cells(i, 8) < 19 Then
Cells(i, 8).Font.Color = vbGreen
ElseIf Cells(i, 8) < 61 Then
Cells(i, 8).Font.Color = vbBlue
Else
Cells(i, 8).Font.ColorIndex = 53
End If
Next i
End Sub
V. Написание макроса «ДиабетЦвета»
Необходимо оценить результатам анализа глюкозы натощак, указав категорию и выделив цветом по таблице 2.
Таблица 1. Соответствие между категорией, уровнем глюкозы и цветом
Категория | Результат глюкозы натощак | Присваемый цвет |
«Норма» | <5.5 | зеленый |
«Подозрение» | > 5.5 | синий |
«Диабет» | > 8 | красный |
Создадим макрос для оценки результатов анализа глюкозы натощак с разделением на категории с использованием «явного» цвета.
Sub ДиабетЦвета()
Dim i As Integer
For i = 4 To 13
If Cells(i, 5) < 5.5 Then
Cells(i, 9) = "норма"
Cells(i, 9).Font.Color = vbGreen
ElseIf Cells(i, 5) < 8 Then
Cells(i, 9) = "подозрение"
Cells(i, 9).Font.Color = vbBlue
Else
Cells(i, 9) = "диабет"
Cells(i, 9).Font.Color = vbRed
End If
Next i
End Sub
Рисунок 9 Таблица с выходными данными по занятию в классе
Приложение 1 Типы данных и их диапазон значений.
Тип данных | байт | Диапазон значений |
Byte (байт) | От 0 до 255 | |
Boolean (логический) | True или False | |
Integer (целые) | От -32768 до 32767 | |
Long (длинное целое) | От -2147483648 до 2147483647 | |
Single (плавающее обычной точности) | От -3,402823E38 до -1,401298Е-45 и от 1,401298Е-45 до 3,402823E38 | |
Double (плавающее двойной точности) | От -1,79769313486231Е308 до -4,94065645841247Е-324 и от 4,94065645841247Е-324 до 1,79769313486231Е308 |
Тип данных | байт | Диапазон значений |
Date (время и дата) | От 1 января 100 г. до 31 декабря 9999 г. | |
Object (объект) | Любой указатель объекта | |
String (строка переменной длины) | 10+ длина строки | От 0 до приблизительно двух миллиардов |
String (строка постоянной длины) | Длина строки | От 1 до 65400 |
Variant (числовые подтипы) | От -1,79769313486232Е308 до -4,94065645841247Е-324 и от 4,94065645841247Е-324 до 1,79769313486232Е308 | |
Variant (строковые подтипы) | 22+ длина строки | От 0 до приблизительно двух миллиардов |
Type (определяемый пользователем) | Определяется элементами типа | Диапазон каждого элемента определяется его типом данных |