'сравниваем старое и новое значение
kind = 0'и ниже переопределяем, если надо (0 = стираем формулу) SelectCaseVarType(Target.Value) Case2To6'новое = числа - с vbInteger по vbCurrency If Target.Value = 0Then'явное указание 0
kind = 1'вставляем формулу (или переопределяем ниже) SelectCaseVarType(oldValue) Case2To6'старое = числа - с vbInteger по vbCurrency If oldValue = 0Then'и старое 0, и новое 0 - т.е. фактически не менялось
kind = 2'ничего не делаем EndIf EndSelect EndIf EndSelect
'определяем содержимое ячейки справа SelectCase kind Case0'стираем формулу
Target.Next.ClearContents Case1'вставляем формулу
Target.Next.Formula = "=TODAY()-DATE(" & Format(Now, "yyyy,m,d") & ")" Case2'ничего не делаем 'случай старое = 0 и новое = 0 (т.е. не стираем формулу) EndSelect EndIf EndSub
И далее кол-во прошедших дней считается по вставляемой в ячейку справа формуле, фиксирующей дату редактирования функцией ДАТА:
'сравниваем старое и новое значение
kind = 0'и ниже переопределяем, если надо (0 = стираем формулу) SelectCaseVarType(Target.Value) Case2To6'новое = числа - с vbInteger по vbCurrency If Target.Value = 0Then'явное указание 0
kind = 1'вставляем формулу (или переопределяем ниже) SelectCaseVarType(oldValue) Case2To6'старое = числа - с vbInteger по vbCurrency If oldValue = 0Then'и старое 0, и новое 0 - т.е. фактически не менялось
kind = 2'ничего не делаем EndIf EndSelect EndIf EndSelect
'определяем содержимое ячейки справа SelectCase kind Case0'стираем формулу
Target.Next.ClearContents Case1'вставляем формулу
Target.Next.Formula = "=TODAY()-DATE(" & Format(Now, "yyyy,m,d") & ")" Case2'ничего не делаем 'случай старое = 0 и новое = 0 (т.е. не стираем формулу) EndSelect EndIf EndSub
И далее кол-во прошедших дней считается по вставляемой в ячейку справа формуле, фиксирующей дату редактирования функцией ДАТА: