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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2012, 13:55   #11
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
У меня в файле всё работает правильно.
Скинь, пожалуйста. А то "стою на траве я в лыжи обутый...". Ну а дальше понятно...
strannick вне форума Ответить с цитированием
Старый 17.11.2012, 14:08   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Что скидывать? Пустой файл с кодом в модуле листа из Вашего файла? Лениво...
Возьмите свой архив, измените код как я выше написал - будет тот же эффект.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.11.2012, 14:21   #13
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию off

Вот почему я и не люблю Worksheet_Change
И применяю его КРАЙНЕ редко и только самые простые действия
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 17.11.2012, 14:28   #14
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Что скидывать? Пустой файл с кодом в модуле листа из Вашего файла? Лениво...
Возьмите свой архив, измените код как я выше написал - будет тот же эффект.
Изменил. Тот же эффект. Изменяю ЛЮБУЮ ячейку на листе, срабатывает первый Call, как будто я изменил ячейку в диапазоне D.
Вложения
Тип файла: rar файл.rar (102.9 Кб, 7 просмотров)
strannick вне форума Ответить с цитированием
Старый 17.11.2012, 15:14   #15
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
Вот почему я и не люблю Worksheet_Change
И применяю его КРАЙНЕ редко и только самые простые действия
Да вроде как действия и не сложные. Изменилась ячейка в диапазоне D - вызвались сторонние макросы, изменились ячейки в диапазоне E - в зависимости от значения проставились даты в этих же строках.
strannick вне форума Ответить с цитированием
Старый 17.11.2012, 15:32   #16
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

У меня не срабатывает.
Только конечно в примере пришлось все эти каллы закомментировать - иначе компилятор ругается.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.11.2012, 15:58   #17
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
У меня не срабатывает.
Только конечно в примере пришлось все эти каллы закомментировать - иначе компилятор ругается.
Эт понятно. А вот у меня срабатывает. Офис 2010. Кстати, обратил внимание на тот факт, что произошло это после последнего обновления (дня три назад). Вот сейчас открыл другой файл с другими делами. Смотрю, там тоже не все так как было. Может это как-то связано? Но в 2007-м та же ерунда.
strannick вне форума Ответить с цитированием
Старый 18.11.2012, 00:34   #18
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Разложил макрос на две части. Первая часть по диапазону D4:D500, вторая часть по диапазону E4:E500. Вторая часть работает нормально. Но первая часть реагирует на изменение ЛЮБОЙ ячейки на листе и вызывает сторонние макросы. Причем, строку
Код:
If Intersect(Target, [D4:D500]) Is Nothing Then Exit Sub
(как сейчас), изменял на
Код:
If Not Intersect(Target, [D4:D500]) Is Nothing Then
(как во второй части), результат тот же - срабатывает при изменении ЛЮБОЙ ячейки.
В общем, проблема не ушла.
Вложения
Тип файла: rar файл.rar (103.5 Кб, 6 просмотров)
strannick вне форума Ответить с цитированием
Старый 18.11.2012, 21:07   #19
ikki_pf
Форумчанин
 
Регистрация: 25.02.2012
Сообщений: 166
По умолчанию

попробуйте так
Код:
If Intersect(Target, Me.[D4:D500]) Is Nothing Then Exit Sub
ikki_pf вне форума Ответить с цитированием
Старый 19.11.2012, 19:16   #20
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Не, так тоже не пролезло. Странное дело, в исходном файле стал делать пошаговые модификации макроса, дошел до варианта, который во вложении - вроде работает нормально, но тормоз остался, идет пересчет формул при изменении любой ячейки на листе, а не только в чувствительных диапазонах. Вставил все таки отключение-включение пересчета формул. Тормоз ушел, но столкнулся со следующим: при изменении опять же любой ячейки на листе пересчет формул отключается и не включается в автомат, остается в ручном режиме. В последний раз выкладываю листинг и прошу глянуть, может что-то все таки не так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
        .ErrorCheckingOptions.BackgroundChecking = False
End With
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("D4:D500,E4:E500")) Is Nothing Then Exit Sub

If Target.Column = 4 Then
    If Cells(Target.row, 4).Value <> Cells(Target.row, 1).Value Then MsgBox "Вы ввели неверный номер Покупателя", vbCritical, "Ошибка": Exit Sub
    If Cells(Target.row, 4).Value = Cells(Target.row, 1).Value Then
        Application.EnableEvents = False
        Call Договор
        Call Спецификация
        Call Накладная
        Call Счет_фактура
        Call Квитанция
        Call СформироватьДоговор
        Application.EnableEvents = True
    End If
Else
    If Target.Column = 5 Then
    If Target.Value = 1 Then Cells(Target.row, 26) = DateValue(Now)
    If Target.Value = 2 Then Cells(Target.row, 26) = DateValue(Now)
    If Target.Value = 3 Then Cells(Target.row, 25) = DateValue(Now)
    End If
End If
With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
        .ErrorCheckingOptions.BackgroundChecking = True
End With
End Sub
И правильно ли я проставил отключение-включение обработки событий? Спасибо!
strannick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какие элементы кода могут тормозить загрузку моего сайта? Pyatachok HTML и CSS 3 08.11.2012 23:05
При многократном использовании VBA-скрипта, он начинает тормозить :( bag Microsoft Office Excel 2 09.04.2010 16:15
Я стал папой Квэнди Свободное общение 43 01.01.2010 21:24
Система начинает тормозить Cotlean Свободное общение 7 28.09.2009 10:41
УРРРААААА!!! Я стал папой !!!! merax Свободное общение 33 28.05.2008 00:51