Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Фиксация введенного значения каждый раз в следующую ячейку - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Фиксация введенного значения каждый раз в следующую ячейку (Макросы/Sub)
Фиксация введенного значения каждый раз в следующую ячейку
ProtAleks Дата: Воскресенье, 07.05.2017, 14:31 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!
Есть макрос:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewCellValue$, OldComment$
Dim cell As Range

'если ячейка не в отслеживаемом диапазоне, то выходим
If Intersect(Target, Range("B:J")) Is Nothing Then Exit Sub

'перебираем все ячейки в измененной области
For Each cell In Intersect(Target, Range("B:J"))
If IsEmpty(cell) Then
NewCellValue = "Ячейка очищена" 'фиксируем очистку ячейки
Else
NewCellValue = cell.Formula 'или ее содержимое
End If
On Error Resume Next

With cell
OldComment = .Comment.Text & Chr(10)
.Comment.Delete 'удаляем старое примечание (если было)
.AddComment 'добавляем новое и вводим в него текст
.Comment.Text Text:=OldComment & Application.UserName & " " & _
Format(Now) & " : " & NewCellValue
.Comment.Shape.TextFrame.AutoSize = True 'делаем автоподбор размера
.Comment.Shape.TextFrame.Characters.Font.Size = 8
End With
Next cell
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B:J")) Is Nothing Then
With Target.Offset(0, 36)
If IsEmpty(.Value) Then .Value = Date
End With
End If
If Not Intersect(Target, Range("B:J")) Is Nothing Then
With Target.Offset(0, 44)
If IsEmpty(.Value) Then .Value = Time
End With
End If
If Not Intersect(Target, Range("B:J")) Is Nothing Then
With Target.Offset(0, 52)
.Value = Date
End With
End If
If Not Intersect(Target, Range("B:J")) Is Nothing Then
With Target.Offset(0, 60)
.Value = Time
End With
End If
If Not Intersect(Target, Range("B:J")) Is Nothing Then
With Target.Offset(0, 68)
.Value = NewCellValue
End With
End If
End Sub

Мне нужно изменить последний макрос
чтобы она каждый раз при введении нового значения фиксировала каждый раз в новую ячейку то есть сохранялась история
следующего содержания "пользователь дата время значение"

так же хочу добавить в этот макрос защиту всех ячеек без заливки
К сообщению приложен файл: 4874366.xlsm(95Kb)
 
Ответить
СообщениеЗдравствуйте!
Есть макрос:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewCellValue$, OldComment$
Dim cell As Range

'если ячейка не в отслеживаемом диапазоне, то выходим
If Intersect(Target, Range("B:J")) Is Nothing Then Exit Sub

'перебираем все ячейки в измененной области
For Each cell In Intersect(Target, Range("B:J"))
If IsEmpty(cell) Then
NewCellValue = "Ячейка очищена" 'фиксируем очистку ячейки
Else
NewCellValue = cell.Formula 'или ее содержимое
End If
On Error Resume Next

With cell
OldComment = .Comment.Text & Chr(10)
.Comment.Delete 'удаляем старое примечание (если было)
.AddComment 'добавляем новое и вводим в него текст
.Comment.Text Text:=OldComment & Application.UserName & " " & _
Format(Now) & " : " & NewCellValue
.Comment.Shape.TextFrame.AutoSize = True 'делаем автоподбор размера
.Comment.Shape.TextFrame.Characters.Font.Size = 8
End With
Next cell
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B:J")) Is Nothing Then
With Target.Offset(0, 36)
If IsEmpty(.Value) Then .Value = Date
End With
End If
If Not Intersect(Target, Range("B:J")) Is Nothing Then
With Target.Offset(0, 44)
If IsEmpty(.Value) Then .Value = Time
End With
End If
If Not Intersect(Target, Range("B:J")) Is Nothing Then
With Target.Offset(0, 52)
.Value = Date
End With
End If
If Not Intersect(Target, Range("B:J")) Is Nothing Then
With Target.Offset(0, 60)
.Value = Time
End With
End If
If Not Intersect(Target, Range("B:J")) Is Nothing Then
With Target.Offset(0, 68)
.Value = NewCellValue
End With
End If
End Sub

Мне нужно изменить последний макрос
чтобы она каждый раз при введении нового значения фиксировала каждый раз в новую ячейку то есть сохранялась история
следующего содержания "пользователь дата время значение"

так же хочу добавить в этот макрос защиту всех ячеек без заливки

Автор - ProtAleks
Дата добавления - 07.05.2017 в 14:31
Manyasha Дата: Воскресенье, 07.05.2017, 16:50 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2010
Репутация: 838 ±
Замечаний: 0% ±

Excel 2010, 2016
ProtAleks, оформите код тегами (кнопка #)


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеProtAleks, оформите код тегами (кнопка #)

Автор - Manyasha
Дата добавления - 07.05.2017 в 16:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Фиксация введенного значения каждый раз в следующую ячейку (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!