
Написание макроса «ВозрастЧисло»
Необходимо самостоятельно написать макрос для расчета возраста в редакторе 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 Таблица с результатами после выполнения макроса ВозрастЧисло()
Написание макроса «ВозрастЦвет»
Отметим пациентов разной возрастной категории цветами для наглядности.
Таблица 1. Соответствие между категорией, возрастом и цветом
Категория |
Возраст |
Присваемый цвет |
«Пожилые» |
от 60 и выше |
коричневый |
«Взрослые» |
от 18 до 60 |
синий |
«Дети» |
от 0 до 18 |
зеленый |
Необходимо самостоятельно написать макрос для разделения на категории по возрасту в редакторе Visual Basic (VBA)
Задать цвет можно несколькими способами
явно
Font.Color = vbBroun
используя индекс цвета
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
Написание макроса «ДиабетЦвета»
Необходимо оценить результатам анализа глюкозы натощак, указав категорию и выделив цветом по таблице 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 (байт) |
1 |
От 0 до 255 |
Boolean (логический) |
2 |
True или False |
Integer (целые) |
2 |
От -32768 до 32767 |
Long (длинное целое) |
4 |
От -2147483648 до 2147483647 |
Single (плавающее обычной точности) |
4 |
От -3,402823E38 до -1,401298Е-45 и от 1,401298Е-45 до 3,402823E38 |
Double (плавающее двойной точности) |
8 |
От -1,79769313486231Е308 до -4,94065645841247Е-324 и от 4,94065645841247Е-324 до 1,79769313486231Е308 |
Тип данных |
байт |
Диапазон значений |
Date (время и дата) |
8 |
От 1 января 100 г. до 31 декабря 9999 г. |
Object (объект) |
4 |
Любой указатель объекта |
String (строка переменной длины) |
10+ длина строки |
От 0 до приблизительно двух миллиардов |
String (строка постоянной длины) |
Длина строки |
От 1 до 65400 |
Variant (числовые подтипы) |
16 |
От -1,79769313486232Е308 до -4,94065645841247Е-324 и от 4,94065645841247Е-324 до 1,79769313486232Е308 |
Variant (строковые подтипы) |
22+ длина строки |
От 0 до приблизительно двух миллиардов |
Type (определяемый пользователем) |
Определяется элементами типа |
Диапазон каждого элемента определяется его типом данных |