powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA (Excel) Процедура Worksheet_Change. Изменение данных на листе.
5 сообщений из 5, страница 1 из 1
VBA (Excel) Процедура Worksheet_Change. Изменение данных на листе.
    #33421033
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При изменении данных в ячейке (на листе) нужно как-то получить первоначальное значение в этой ячейке (то есть значение, которое мы изменяем) и занести его в переменную date_n

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Worksheet_Change(ByVal Target As Range)

Dim rrow As Integer, ccol As Integer, date_n As Date

   rrow = Target.Row
   ccol = Target.Column
   date_n = Target.Value

End Sub

Код: plaintext
date_n = Target.Value
Данное выражение помещает в переменную новое введённое в ячейку значение, а вот как получить старое??


Аленочка тм
...
Рейтинг: 0 / 0
VBA (Excel) Процедура Worksheet_Change. Изменение данных на листе.
    #33421055
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё нашла, всем спасибо
Аленочка тм
...
Рейтинг: 0 / 0
VBA (Excel) Процедура Worksheet_Change. Изменение данных на листе.
    #33421116
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private varOldValue As Variant
Private varNewValue As Variant

Private Sub Worksheet_Change(ByVal Target As Range)
    varNewValue = Target.Value
    MsgBox "Старое значение: " & varOldValue
    MsgBox "Новое значение: " & varNewValue
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    varOldValue = Target.Value
End Sub
...
Рейтинг: 0 / 0
VBA (Excel) Процедура Worksheet_Change. Изменение данных на листе.
    #33422736
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Аленочкавсё нашла, всем спасибо

поделись с сирыми, как это делается, чрезвычайно интересно
...
Рейтинг: 0 / 0
VBA (Excel) Процедура Worksheet_Change. Изменение данных на листе.
    #33520668
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня была задача следующая: мне нужно было фиксировать изменения в определённом столбце. В этом столбце содержалась дата. В соседнем столбце содержалась запись "Месяц Год" для этой даты. Пользователь мог вручную изменить дату и нужно было программно поменять значение "Месяц Год" в соседнем столбце.

1. В начале модуля объявила переменную, в которую буду помещать изменяемое (старое) значение ячейки:

Код: plaintext
Dim vPastValue As Variant

2. Значение переменной vPastValue получаю в событии:

Код: plaintext
1.
2.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    vPastValue = Target.Cells( 1 ,  1 ).Value
End Sub

Это событие возникает при выделении диапазона либо ячейки на листе. В переменную vPastValue помещается значение ячейки, расположенной в первой строке и в первом столбце выделенного диапазона. Если на листе была выделена одна ячейка, то в переменную vPastValue помещается значение этой самой ячейки.

3. Далее при изменении данных в выделенной ячейке используем событие:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub Worksheet_Change(ByVal Target As Range)

Dim rrow As Integer, ccol As Integer       ' переменные для номера строки и номера столбца
Dim vNewValue As Variant                        ' переменная для нового значения ячейки 

rrow = Target.Row                                  ' получаем номер строки, в которой нах-ся изменяемая ячейка
ccol = Target.Column                              '  получаем номер столбца, в котором нах-ся изменяемая ячейка

' если была изменена ячейка А1 на листе, то выводим старое и новое значения в сообщении:
If ccol =  1  and rrow= 1  then

vNewValue = Target.Cells( 1 ,  1 ).Value    ' получаем новое изменённое значение ячейки
MsgBox vPastValue & Chr( 13 ) & vNewValue ' выводим старое значение и новое

end if

End Sub

То есть так как написал Пользователь2.
Можно скопировать этот код в модуль листа Excel и попробовать изменить значение в ячейке A1.

Аленочка тм
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA (Excel) Процедура Worksheet_Change. Изменение данных на листе.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]