0 / 0 / 0
Регистрация: 09.09.2022
Сообщений: 41
1

Макрос на просмотр предыдущих значений в ячейках excel

24.01.2023, 12:15. Показов 417. Ответов 9
Метки нет (Все метки)

Добрый день! Моя цель: видеть комментарием к ячейке прошлый результат расчетов(только 1 предыдущий) и нынешний

Есть несколько макросов, показывающие изменения в ячейках( и результат его выполнение в картинке номер 1 во вложении), но он показывает только изменения в ячейках, которые без формул, а мне нужно чтоб расчетные изменения в формулах также учитывались, подскажите, пожалуйста, как это сделать


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


If Intersect(Target, Range("B3:B5")) Is Nothing Then Exit Sub


For Each cell In Intersect(Target, Range("F:S"))
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
Миниатюры
Макрос на просмотр предыдущих значений в ячейках excel  
Вложения
Тип файла: xlsx расчет выработки помесячно.xlsx (211.4 Кб, 5 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2023, 12:15
Ответы с готовыми решениями:

Макрос для привязки значений к дате с сохранением предыдущих значений
Доброго времени суток. Помогите написать макрос. Суть вопроса: Есть таблица, в которую ежедневно...

Макрос перехода к датам в ячейках Excel
Здравствуйте! Я VBA почти не знаю. Веду БД в Excel и встала необходимость перехода к определенной...

Макрос для удаления значений в ячейках
Здравствуйте, уважаемые Асы. Помоги написать макросдля Эксель. Смысл такой удалить данные из ячейки...

Нужен макрос для удаления значений в ячейках по условию
Ребята каким можно макросом удалять значения определённых ячеек .Задача макроса ,в ячейках в каждой...

9
0 / 0 / 0
Регистрация: 09.09.2022
Сообщений: 41
24.01.2023, 12:16  [ТС] 2
макрос 2

Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Long
Dim xCell As Range
Dim xHeader As String
Dim xCommText As String
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
xHeader = "Previous value :"
For I = 0 To UBound(xDic.Keys)
Set xCell = Range(xDic.Keys(I))
If Not xCell.Comment Is Nothing Then xCell.Comment.Delete
With xCell
.AddComment
.Comment.Visible = False
.Comment.Text xHeader & vbCrLf & xDic.Items(I)
End With
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim I, J As Long
Dim xRgArea As Range
On Error GoTo Label1
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Set xDependRg = Target.Dependents
If xDependRg Is Nothing Then GoTo Label1
If Not xDependRg Is Nothing Then
Set xDependRg = Intersect(xDependRg, Range("C:C"))
End If
Label1:
Set xRg = Intersect(Target, Range("C:C"))
If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
Set xChangeRg = Union(xRg, xDependRg)
ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
Set xChangeRg = xDependRg
ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
Set xChangeRg = xRg
Else
Application.EnableEvents = True
Exit Sub
End If
xDic.RemoveAll
For I = 1 To xChangeRg.Areas.Count
Set xRgArea = xChangeRg.Areas(I)
For J = 1 To xRgArea.Count
xDic.Add xRgArea(J).Address, xRgArea(J).Text
Next
Next
Set xChangeRg = Nothing
Set xRg = Nothing
Set xDependRg = Nothing
Application.EnableEvents = True
End Sub
0
ᴁ®
Эксперт MS Access
2911 / 1618 / 339
Регистрация: 13.12.2016
Сообщений: 5,447
Записей в блоге: 3
24.01.2023, 21:07 3
Цитата Сообщение от Dima101098 Посмотреть сообщение
а мне нужно чтоб расчетные изменения в формулах также учитывались
Изменяете формулы?

Добавлено через 6 минут
Не правильно оформленный вопрос вызывает желание не читать его.
Не грамотная постановка задачи не предполагает грамотных ответов.
Проигнорированные предыдущие советы в предыдущих вопросах от вас обнуляют вероятность желающих помочь.
0
0 / 0 / 0
Регистрация: 09.09.2022
Сообщений: 41
25.01.2023, 08:59  [ТС] 4
АЕ, Доброе утро, нет, данные будут изменяться только на листе "исходные данные", на всех других листах(в примере 1 лист, на деле несколько однотипных листов, форма 1 в 1) формулы будут пересчитываться в зависимости от значений которые вводим в исходных данных

Добавлено через 7 минут
АЕ, Т.е изменили в исходных данных скорость ветра, на всех остальных листах выработка энергии изменилась(ну и остальные данные), наводим на ячейку и в комментариях видим прошлые результаты. Хотелось бы это видеть так..

Добавлено через 2 часа 22 минуты
АЕ, На листе чистая выработка почти все ячейки имеют либо ссылку связями, либо формулу(которая пересчитывается каждый раз при изменении исходных данных(скорость ветра и часы простоя)

Вот нужно видеть именно пересчет этих формул, т.е к примеру, была скорость ветра в ВЭС 1 = 6.5 а Wпрогноз = 12810, изменили скорость ветра на 10, Wпрогноз стал = 43372(формула сама все посчитала, я меняю только значения скорости ветра и часов простоя в исходных данных, больше абсолютно ничего не трогаю)

Хочется увидеть: Навели курсор на ячейку Wпрогноз и показывается комментарием "прошлое значение: 12810"

В этот раз все очень подробно написал, извиняюсь если изначально плохо объяснил

P.S рассматриваю все возможные варианты, если намного проще реализовать это в другом виде
Для скорости работы можно сделать только для ячеек Wпрогноз, КИУМ, скорость ветра, остальные не нужны

"Проигнорированные предыдущие советы в предыдущих вопросах от вас обнуляют вероятность желающих помочь." Извиняюсь, но не очень понимаю о чем речь, вы имеете ввиду что нужно помечать то, что я хочу увидеть в самом файле?
0
100 / 88 / 16
Регистрация: 08.02.2017
Сообщений: 481
27.01.2023, 02:47 5
Хотел предложить вариант с отслеживанием значений с помощью vba-udf, даже макрчик написал, но выявилась неполадка, оказывается vba-шные udf не реагируют на изменения в сложных формулах, или может быть связано с плавающими запятыми х.з.
0
ᴁ®
Эксперт MS Access
2911 / 1618 / 339
Регистрация: 13.12.2016
Сообщений: 5,447
Записей в блоге: 3
27.01.2023, 11:14 6
Цитата Сообщение от Dima101098 Посмотреть сообщение
Вот нужно видеть именно пересчет этих формул, т.е к примеру, была скорость ветра в ВЭС 1 = 6.5 а Wпрогноз = 12810, изменили скорость ветра на 10, Wпрогноз стал = 43372(формула сама все посчитала, я меняю только значения скорости ветра и часов простоя в исходных данных, больше абсолютно ничего не трогаю)
Для этого надо не комментарии к ячейкам оставлять, а сохранять копию листа с переименованием. Вам так не кажется?
0
1158 / 636 / 228
Регистрация: 22.12.2015
Сообщений: 1,966
27.01.2023, 12:02 7
Цитата Сообщение от testuser2 Посмотреть сообщение
vba-шные udf не реагируют на изменения в сложных формулах
Любопытно, если аргументы перечислены в явном виде и меняются - вроде бы Эксель должен запускать пересчет, разве нет?
А если отобразить на ячейке с подозрительной формулой (в смысле - со сложной) зависимые ячейки, стрелочка к udf отображается?
0
100 / 88 / 16
Регистрация: 08.02.2017
Сообщений: 481
27.01.2023, 12:35 8
Цитата Сообщение от testuser2 Посмотреть сообщение
но выявилась неполадка, оказывается vba-шные udf не реагируют на изменения в сложных формулах, или может быть связано с плавающими запятыми х.з.
Решилось костылем - добавлением какой-нибудь не нагружной встроенной функции диапазона, (в римере "СЧЁТ()") в качестве аргумента UDF и она начинает "подскакивать по щелчку". Но при этом выявился еще один не благотворный нюанс - наличие волатильных функций в цепочке формул, в данном случае это значит, что udf-ки будут "подскакивать" "по любому тыку", - как минимум не полезно. Упомянутый макрчик, не один если быть точнее, можно доработать до надстройки.
Для того чтобы начать слежение за диапазоном, нужно поместить в заголовок (или куда-либо еще) функцию ChangeControl (с названием подкачал, можете придумать получше), первым аргументом установить диапазон, вторым (необязательно) - то, что должно выводиться на месте функции, третий аргумент не обязательный нужен если не срабатывает, 4 аргумент - идентификатор, проставляется автоматически макросом
Миниатюры
Макрос на просмотр предыдущих значений в ячейках excel  
Вложения
Тип файла: zip расчет выработки помесячно2.zip (208.0 Кб, 2 просмотров)
0
100 / 88 / 16
Регистрация: 08.02.2017
Сообщений: 481
27.01.2023, 12:50 9
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
Любопытно, если аргументы перечислены в явном виде и меняются - вроде бы Эксель должен запускать пересчет, разве нет?
А если отобразить на ячейке с подозрительной формулой (в смысле - со сложной) зависимые ячейки, стрелочка к udf отображается?
Раньше замеал, что vba-udf не "видит" некоторых изменеий, хотя если поместить такую формулу в качестве аргумента UDF то она срабатывает как полагается, однакож, не изящно.. К слову у UDF еще есть ряд ограничений и глюков, за что видимо их не особо жалуют.
0
100 / 88 / 16
Регистрация: 08.02.2017
Сообщений: 481
28.01.2023, 19:08 10
Цитата Сообщение от testuser2 Посмотреть сообщение
Но при этом выявился еще один не благотворный нюанс - наличие волатильных функций в цепочке формул
А вот где волатильность зарыта
Миниатюры
Макрос на просмотр предыдущих значений в ячейках excel   Макрос на просмотр предыдущих значений в ячейках excel  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2023, 19:08
Помогаю со студенческими работами здесь

Макрос на изменение значений в ячейках при изменении значения в ячейке
Есть некая таблица, в которой в ячейках колонки D размещаются значения суммы ячеек колонки B и C....

Увеличение значений в ячейках Excel
господа, помогите решить довольно простую проблему. в екселе имею длиииииный столбец чисел. мне...

Изменение значений в ячейках Excel, с учетом изменения даты
Добрый день! Совсем не опытный пользователь Excel(очень нуждаюсь в помощи! В исходных данных имею...

Макрос всевозможных перестановок значений ячеек /Excel
требуется написать следующий макрос: Для выделенных ячеек строки вывести под ними все возможные...

Макрос поиска значений по разным файлам Excel
Есть такой макрос: Option Explicit Dim FSO As Object, iFolder As Object, iFile As Object, FD...

Excel. Макрос на суммирование значений одной ячейки
Здравствуйте. Очень нужна помощь. Необходимо, сделать макрос на суммирование значений в одной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru