Страница 1 из 1

Как в программе Excel получив значение сделать так чтобы оно не изменялось?

Добавлено: 19 апр 2011, 23:32
DenPorsche
Имеется ячейка A1 , в ней текущая дата и время.
Во второй ячейке (А2) собственноручно вводим дату и время.
В третьей ячейке (А3) разница между второй и первой ячейкой (А2 - А1).

Как сделать так, чтобы получив однажды результат, третья ячейка больше не изменялась при изменении текущих даты и времени?

Спасибо заранее если кто-то поможет!

Re: Как в программе Excel получив значение сделать так чтобы оно не изменялось?

Добавлено: 01 авг 2011, 21:32
district
преобразовывайте формулу в значение. Через какой-нибудь sheet_change. К примеру у вас небольшой последовательно заполняемый диапазон (без пустых строк посередине). Для любого изменения на листе указываете что-нибудь вроде:

dim used_range_start as boolean

used_range_start = false

with thisworkbook.sheets(1)
For each cel in .range(.range("A2").entirecolumn.address)
If used_range_start = false then
If cel.address = .range("адрес ячейки заголовка").address then
used_range_start = true
end if
else
If cel = "" then
exit for
else
If cel <> "" and istr(cel.offset(1,0).formula,"=") <> 0 then
cel.offset(1,0) = cel.offset(1,0).value
end if
end if
end if
next
used_range_start = false
end with

Re: Как в программе Excel получив значение сделать так чтобы оно не изменялось?

Добавлено: 02 авг 2011, 06:15
SAS888
DenPorsche
Как сделать так, чтобы получив однажды результат, третья ячейка больше не изменялась при изменении текущих даты и времени?
Если я правильно понимаю, то в ячейке A1 находится функция, например, "=СЕГОДНЯ()" (т.е. значение всегда присутствует), значит ячейка A3 получить значение "однажды" может только тогда, когда пользователь первый раз вводит значение в ячейку A2, т.е. в пустую ячейку. Если так, то достаточно в модуль требуемого листа поместить код:

Код: Выделить всё

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = [A2].Address Then If [A2] <> "" And [A3] = "" Then [A3] = [A2] - [A1]
End Sub
Теперь, после ввода значения в пустую ячейку A2 в ячейке A3 появится требуемый результат, который не будет изменятся в дальнейшем, при изменении значений ячеек A1 и A2.
Для того, чтобы обновить результат в ячейке A3, потребуется очистить содержимое ячеек A2 и A3 и в ячейку A2 вставить новое требуемое значение.