|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.05.2010, 19:44 | #1 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 61
|
Как заставить код читать обновление величины в ячейке?
Есть код, который скрывает или показывает определенные строки в зависимости от величины в ячейке. Если в ячейку вводить величину вручную, то все код работает. На самом же деле, величина в ячейке является результатом вычисления и когда эта величина меняется, то код не хочет видеть изменения и скрывать строки. Можно ли этому помочь?
|
20.05.2010, 20:34 | #2 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Покажите ваш код, скажу, что можно сделать
|
21.05.2010, 04:42 | #3 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
При непосредственном изменении значения ячейки (вручную, макросом и т.п.) наступает событие Worksheet_Change. Т.к. в этом случае у Вас все работает, то, видимо, макрос запускается именно по этому событию. Если же значение в ячейке является результатом вычисления на листе Excel, то вышеупомянутое событие не наступит. Запуск Вашего макроса нужно "привязывать" к событию пересчета листа Worksheet_Calculate.
Чем шире угол зрения, тем он тупее.
|
21.05.2010, 11:24 | #4 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 61
|
Cпасибо, суть ясна, а по формату вопрос
Вот первый код, который Change и который работает
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = [c10].Address Then ActiveSheet.UsedRange.EntireRow.Hid den = False Range(Target + 14 & ":22").EntireRow.Hidden = (Target > 2 And Target < 9) End If End Sub Вот второй, как Вы посоветовали Private Sub Worksheet_Calculate(ByVal Target As Range) If Target.Address = [i23].Address Then ActiveSheet.UsedRange.EntireRow.Hid den = False Select Case Target Case 0: Range("24:24").EntireRow.Hidden = True End Select End If End Sub Второй не работает, пишет Procedure declaration does not match description of event or procedure having the same name Не подскажите, как поправить второй и объединить оба в один рабочий? |
21.05.2010, 11:35 | #5 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
В Ваших примерах всегда разные процедуры. Скажите, в каком случае (при каком событии) что Вы хотите сделать.
Чем шире угол зрения, тем он тупее.
|
|
21.05.2010, 11:55 | #6 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 61
|
Хочу следующее - в зависимости от значения в ячейке С10 (от 3 до 8) нужно скрывать линии, при С10=3 -> от 17 до 22, С10=4 -> от 18 до 22 и тд до С10=8.
При этом в ячейках K28,K29 и K30 калькулируются некие величины (либо 0 либо больше 0). Требуется,чтобы при K28=0 сворачивалась линия 32, а при любой другой величине - оставалась видимой. И точно такие же операции нужны для ячейки К29 и линии 33 и ячейки К30 и линии 34. |
21.05.2010, 12:22 | #7 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Посмотрите пример во вложении. Подробности в файле. Что не так?
Чем шире угол зрения, тем он тупее.
|
21.05.2010, 14:37 | #8 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 61
|
У Вас в примере все работает, у меня = нет. Мистика
Я приложил настоящий файл (формат XLSM). Требуется, чтобы скрывалась строка 24, если в ячейке I24=0, строка 25 , если I25=0 и строка 26, если I26=0. Не знаю можно ли использовать ячейки в скрываемых линиях, но так же не работает, если пытаться вставить формулу из, скажем, I25 в L2 и использовать L2 в условиях кода.
Когда после существующего кода я вставляю Private Sub Worksheet_Calculate() If [L2] = 0 Then Rows(24).Hidden = True Else Rows(24).Hidden = False End Su начинается мелькание на экране и все вешается Не могли бы Вы взглянуть? |
25.05.2010, 16:09 | #9 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 61
|
Уважаемый SAS888, не взгляните на реальный пример?
в предудщем сообщении. спасибо
|
26.05.2010, 07:04 | #10 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Первой строкой кода напишите Application.EnableEvents = False, а последней - Application.EnableEvents = True. Это запретит обработку событий на время выполнения процедуры. Как раз это в Вашем случае и происходит. Сам код обработки пишите какой требуется. Скрыта строка с которой работает код или нет - без разницы.
Чем шире угол зрения, тем он тупее.
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как заставить код работать во всех книгах указанной папки | KNatalia | Microsoft Office Excel | 12 | 25.12.2012 11:32 |
Делфи. Как заставить читать данные с метки | Pro4RE | Помощь студентам | 10 | 08.12.2009 21:48 |
Как читать Cookies | erick_ | Общие вопросы Delphi | 1 | 23.02.2009 07:35 |
Как читать атрибуты с файлов? | eks-s | Общие вопросы Delphi | 2 | 16.01.2008 02:25 |