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

Вход

Регистрация

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

 

= Мир MS Excel/Совмещение двух макросов в одном файле - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Совмещение двух макросов в одном файле
azzamat Дата: Четверг, 23.11.2023, 14:37 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 20% ±

Я создаю exсel файл для создания клиентской базы со скидочными данными(искал уже готовые excel файлы такого типа, но все они не подходят.)
В общем я нашел один макрос который мне нужен, это суммирование веденный данных в одной и той же ячейке, этот макрос работает...
И нашел второй макрос в интернете, это сохранение веденных данных ячейки в примечании, но этот макрос не работает...
Пытался сам разобраться, но как-то сложно дается, помогите пожалуйста наладить макрос.

Макросы:

Dim iValue
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F2:F500")) Is Nothing Then
Application.EnableEvents = False
If Target = "" Then
Target = 0
Application.EnableEvents = True
Exit Sub
End If
If IsNumeric(Target) Then
Target = Target + iValue
Else
MsgBox "Вы ввели нечисловое значение. Повторите ввод.", 48, "Ашипка, блин!"
Target = iValue
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("F2:F500")) Is Nothing Then
iValue = Target
Else
iValue = 0
End If
End Sub

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

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

'перебираем все ячейки в измененной области
For Each cell In Intersect(Target, Range("E2:E500"))
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, "MM.DD.YY h:MM:ss") & " : " & NewCellValue
.Comment.Shape.TextFrame.AutoSize = True 'делаем автоподбор размера
.Comment.Shape.TextFrame.Characters.Font.Size = 8
End With
Next cell
End Sub
К сообщению приложен файл: kkk.xlsm (17.5 Kb)
 
Ответить
СообщениеЯ создаю exсel файл для создания клиентской базы со скидочными данными(искал уже готовые excel файлы такого типа, но все они не подходят.)
В общем я нашел один макрос который мне нужен, это суммирование веденный данных в одной и той же ячейке, этот макрос работает...
И нашел второй макрос в интернете, это сохранение веденных данных ячейки в примечании, но этот макрос не работает...
Пытался сам разобраться, но как-то сложно дается, помогите пожалуйста наладить макрос.

Макросы:

Dim iValue
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F2:F500")) Is Nothing Then
Application.EnableEvents = False
If Target = "" Then
Target = 0
Application.EnableEvents = True
Exit Sub
End If
If IsNumeric(Target) Then
Target = Target + iValue
Else
MsgBox "Вы ввели нечисловое значение. Повторите ввод.", 48, "Ашипка, блин!"
Target = iValue
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("F2:F500")) Is Nothing Then
iValue = Target
Else
iValue = 0
End If
End Sub

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

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

'перебираем все ячейки в измененной области
For Each cell In Intersect(Target, Range("E2:E500"))
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, "MM.DD.YY h:MM:ss") & " : " & NewCellValue
.Comment.Shape.TextFrame.AutoSize = True 'делаем автоподбор размера
.Comment.Shape.TextFrame.Characters.Font.Size = 8
End With
Next cell
End Sub

Автор - azzamat
Дата добавления - 23.11.2023 в 14:37
i691198 Дата: Четверг, 23.11.2023, 20:57 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 337
Репутация: 108 ±
Замечаний: 0% ±

Добрый вечер. Макрос Worksheet_Change_2 не будет работать при изменении значений ячеек, имя должно быть Worksheet_Change. Однако макрос с таким именем уже существует, поэтому нужно оба макроса соединить в один.
 
Ответить
СообщениеДобрый вечер. Макрос Worksheet_Change_2 не будет работать при изменении значений ячеек, имя должно быть Worksheet_Change. Однако макрос с таким именем уже существует, поэтому нужно оба макроса соединить в один.

Автор - i691198
Дата добавления - 23.11.2023 в 20:57
  • Страница 1 из 1
  • 1
Поиск:

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