Выполнение макроса в зависимости от вычисленного значения

Автор K8611, 10 ноября 2015, 21:33

0 Пользователи и 1 гость просматривают эту тему.

K8611

Добрый вечер!
Пожалуйста подскажите как инициализировать выполнение макроса в зависимости от значения вычисленного в ячейке по формуле.
Пользователь вводит дату рождения пациента, в ячейке по формуле =YEARS(D1;D2;0), высчитывается количество полных лет, возраст пациентов от 18 до 100 лет.

Option Explicit
    Dim oDoc As Object, oSheet As Object,oCell As Object, a As Integer
Sub CheckAge
   oDoc=ThisComponent 
   oSheet=oDoc.Sheets.getByName("Sheet1") 
   oCell=oSheet.getCellByPosition(3,0) 'D1
   a = oCell.getValue()
   if a() < 18 or a() > 100 Then
   startWarning() Else
   end if
End Sub
Sub startWarning ()
   msgbox "Проверьте пожалуйста дату рождения !",128+48+0,"Предупреждение"
end sub 

JohnSUN

#1
Правой кнопкой на ярлычке листа, События листа, Выделенная область изменена, Макрос, CheckAge?..

Или всё-таки Данные-Проверка?..

PS. Если даты нужны совсем уж точные, то формулы для ограничения лучше задать не такие, как на картинке, а
EDATE(TODAY();-100*12)
EDATE(TODAY();-18*12)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

K8611

Спасибо за помощь! Всё получилось.
Проблема состояла в том, что нужно выводить и дату рождения и  возраст "полных лет" и бывали случаи когда "пропадали" пациенты при отборе по возрастным группам (групп до 18 и после 100 не предусматривалось), ограничения по датам пробовал, но не в таком виде, обязательно попробую "EDAY(TODAY(); -100*12).....