Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2014, 16:51   #11
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

))))
это не по моему макросу, а по Вашему))
насколько понял что там происходит, настолько вставил цикл от 7 до 100, стараясь максимально оставить все как было.

а при выполнении каких условий что очищать - решайте сами (или рассказывайте задачу детальнее)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.06.2014, 17:41   #12
diffuser
 
Регистрация: 20.05.2014
Сообщений: 8
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
))))
это не по моему макросу, а по Вашему))
насколько понял что там происходит, настолько вставил цикл от 7 до 100, стараясь максимально оставить все как было.

а при выполнении каких условий что очищать - решайте сами (или рассказывайте задачу детальнее)
Сорри)

Необходимо просматривать все ячейки столбца С с С7 по С100. Если по пересчету в С7 появляется новое значение (в С7 находится формула, которая извлекает числовое значение из другого файла), то присваиваем ячейке L7 значение 1, очищаем содержимое D7,E7 и J7, а затем присваиваем L7 значение 0.
Если по пересчету в С8 появляется новое значение (в С8 находится формула, которая извлекает числовое значение из другого файла), то присваиваем ячейке L8 значение 1, очищаем содержимое D8,E8 и J8, а затем присваиваем L8 значение 0.
И так далее до С100.

Т.е. при срабатывании макрос должен просматривать каждую ячейку в столбце С, находить в них изменения и если находятся числовые отличия - очищать соответствующие D,E и J.

Последний раз редактировалось diffuser; 10.06.2014 в 17:45.
diffuser вне форума Ответить с цитированием
Старый 10.06.2014, 18:24   #13
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Если по пересчету в С7 появляется новое значение
а где взять старое?
Код:
Если по пересчету в С8 появляется новое значение
а где взять старое? ... и так до строки 100
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.06.2014, 20:59   #14
diffuser
 
Регистрация: 20.05.2014
Сообщений: 8
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
а где взять старое?
Код:
Если по пересчету в С8 появляется новое значение
а где взять старое? ... и так до строки 100
Ну в моем коде ведь происходило сравнение старого значения с новым по ячейке C7.

Цитата:
Сообщение от diffuser Посмотреть сообщение
Код:
Private Sub Worksheet_Calculate()
 Application.EnableEvents = False
Static OldVal1 As Variant, OldVal2 As Variant
If Range("C7").Value <> OldVal1 Then
    OldVal1 = Range("C7").Value
    Range("L7") = 1
If [L7] = "1" Then Range("D7:E7,J7").ClearContents
Range("L7") = 0
End If
 Application.EnableEvents = True
End Sub
diffuser вне форума Ответить с цитированием
Старый 11.06.2014, 10:27   #15
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
1  for r = 7 to 100
2  If cells(r,3).Value <> OldVal1 Then
3      OldVal1 = cells(r,3).Value
4      cells(r,12) = 1
5      If cells(r,12) = "1" Then cells(r,4).resize(1,2).ClearContents: cells(r,10).ClearContents
6      cells(r,12) = 0
7    End If
8  next
уважаемый,
в Вашем коде присутсвует загадочная переменная OldVal1, которая, судя по названию, должна сожержать старое значение, НО НИГДЕ НЕ ВИДНО когда ей єто старое значение присваивается - это раз!

расмотрим цикл:
стартует все с r = 7
в строке 2 ячейка (7,3) сравнивается с загадочной OldVal1
-- если они равны - ничего не происходит цикл переходит в след.строку и теперь с загадочной OldVal1 будет сличена ячейка(8,3)
-- если не равны OldVal1 получит значение из ячейки (7,3), будут проделаны еще некоторые операции и цикл перейдет в след. строку (8), и теперь уже с OldVal1 (фактически с ячейкой (7,3) будет сравниваться ячейка (8,3). Вы этого добивались? я очень сильно сомневаюсь, что сравнивать надо было эти значения
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.06.2014, 10:42   #16
diffuser
 
Регистрация: 20.05.2014
Сообщений: 8
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
1  for r = 7 to 100
2  If cells(r,3).Value <> OldVal1 Then
3      OldVal1 = cells(r,3).Value
4      cells(r,12) = 1
5      If cells(r,12) = "1" Then cells(r,4).resize(1,2).ClearContents: cells(r,10).ClearContents
6      cells(r,12) = 0
7    End If
8  next
уважаемый,
в Вашем коде присутсвует загадочная переменная OldVal1, которая, судя по названию, должна сожержать старое значение, НО НИГДЕ НЕ ВИДНО когда ей єто старое значение присваивается - это раз!

расмотрим цикл:
стартует все с r = 7
в строке 2 ячейка (7,3) сравнивается с загадочной OldVal1
-- если они равны - ничего не происходит цикл переходит в след.строку и теперь с загадочной OldVal1 будет сличена ячейка(8,3)
-- если не равны OldVal1 получит значение из ячейки (7,3), будут проделаны еще некоторые операции и цикл перейдет в след. строку (8), и теперь уже с OldVal1 (фактически с ячейкой (7,3) будет сравниваться ячейка (8,3). Вы этого добивались? я очень сильно сомневаюсь, что сравнивать надо было эти значения
IgorGO, здравствуйте! Видимо, из-за своей неграмотности в VBA - не оч понимаю то, что сделал, так что еще раз извиняюсь.

Вот, что необходимо.

Берем ячейку С7. Запоминаем ее старое значение. Меняю в другом файле значение. Происходит пересчет по формуле. Сравниваем старое и новое значения. Если новое - по формуле значение в С7 меняется, а по макросу присваиваем ячейке L7 значение 1, очищаем содержимое D7,E7 и J7, а затем присваиваем L7 значение 0. Если оно не отличается, переходим на следующую строку и сравниваем С8.

И вот таким образом если в диапазоне С7:С100 происходят изменения - должен срабатывать этот макрос анализа по каждой строке диапазона.

Последний раз редактировалось diffuser; 11.06.2014 в 11:03.
diffuser вне форума Ответить с цитированием
Старый 11.06.2014, 11:47   #17
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Берем ячейку С7. Запоминаем ее старое значение
и как часто мы это делаем?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.06.2014, 15:50   #18
diffuser
 
Регистрация: 20.05.2014
Сообщений: 8
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
и как часто мы это делаем?
Вот это даже не знаю. Может запоминать значения после каждого срабатывания макроса?! Т.е. сработал, прошел с 7й строки до 100й, запомнил текущие значения.
diffuser вне форума Ответить с цитированием
Старый 13.06.2014, 09:17   #19
diffuser
 
Регистрация: 20.05.2014
Сообщений: 8
По умолчанию

IgorGO, прошу прощения за беспокойство. Вариантов нет?
diffuser вне форума Ответить с цитированием
Старый 13.06.2014, 10:45   #20
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вариантов полно. желание отсутсвует...
см. вложение, может быть как-то так
Вложения
Тип файла: rar CheckVal.rar (7.4 Кб, 15 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кнопка скрытия и восстановления строк по условию CooLEO Microsoft Office Excel 16 06.08.2013 14:10
макрос скрытия на защищённые ячейки kartol Microsoft Office Excel 2 24.09.2012 09:13
Макрос для скрытия листов в Excel Степан777 Microsoft Office Excel 2 02.03.2012 22:36
макрос для скрытия и показа строк в выбранном диапазоне шрк Microsoft Office Excel 2 04.11.2011 11:30
Макрос поиска текста на листе Movled Microsoft Office Excel 11 29.07.2010 11:59