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

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
DenPorsche
Сообщения: 1
Зарегистрирован: 19 апр 2011, 23:19

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

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

Спасибо заранее если кто-то поможет!
district
Сообщения: 56
Зарегистрирован: 13 ноя 2007, 23:03
Откуда: Москва

преобразовывайте формулу в значение. Через какой-нибудь 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
SAS888
Сообщения: 156
Зарегистрирован: 16 янв 2008, 08:28

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 вставить новое требуемое значение.
Ответить