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

Вход

Регистрация

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

 

= Мир MS Excel/Worksheet_Change - сбой при выполнении - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Worksheet_Change - сбой при выполнении (Макросы/Sub)
Worksheet_Change - сбой при выполнении
pabchek Дата: Вторник, 06.09.2016, 10:35 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 691
Репутация: 152 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте!
Учусь. Никак не соображу что не так. Прошерстил массу примеров - свою тупость не пробил((( Подскажите, плз.
В примере: при любом изменении на листе (в оригинале выбор из сводной, но не суть) текст из ячейки I6 (желтая) ищу на другом листе. Затем значения из найденного диапазона вставляем на "родной" лист в указанное поле (тоже желтое).
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = 0
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6")
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Sheets("Форма").Range("B16:O18") = Sheets("Сбор16").Range("A" & поз_16 & ":N" & поз_16 + 2)
End Sub
[/vba]
К сообщению приложен файл: 1736355.xlsb(20Kb)


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
СообщениеЗдравствуйте!
Учусь. Никак не соображу что не так. Прошерстил массу примеров - свою тупость не пробил((( Подскажите, плз.
В примере: при любом изменении на листе (в оригинале выбор из сводной, но не суть) текст из ячейки I6 (желтая) ищу на другом листе. Затем значения из найденного диапазона вставляем на "родной" лист в указанное поле (тоже желтое).
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = 0
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6")
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Sheets("Форма").Range("B16:O18") = Sheets("Сбор16").Range("A" & поз_16 & ":N" & поз_16 + 2)
End Sub
[/vba]

Автор - pabchek
Дата добавления - 06.09.2016 в 10:35
_Boroda_ Дата: Вторник, 06.09.2016, 10:43 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 10334
Репутация: 4357 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так?
[vba]
Код
    Application.ScreenUpdating = 0
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6")
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Range("B16:O18") = Sheets("Сбор16").Range("A" & поз_16 & ":N" & поз_16 + 2).Value
[/vba]
Последнюю строку можно так
[vba]
Код
    Range("B16").Resize(3, 14) = Sheets("Сбор16").Range("A" & поз_16).Resize(3, 14).Value
[/vba]
И, кстати, да, как ниже уже написали, нужно прервать обработку событий и потом ее взад поставить
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = 0
    Application.EnableEvents = 0
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6")
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Range("B16").Resize(3, 14) = Sheets("Сбор16").Range("A" & поз_16).Resize(3, 14).Value
    Application.EnableEvents = 1
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995


Сообщение отредактировал _Boroda_ - Вторник, 06.09.2016, 10:48
 
Ответить
СообщениеТак?
[vba]
Код
    Application.ScreenUpdating = 0
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6")
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Range("B16:O18") = Sheets("Сбор16").Range("A" & поз_16 & ":N" & поз_16 + 2).Value
[/vba]
Последнюю строку можно так
[vba]
Код
    Range("B16").Resize(3, 14) = Sheets("Сбор16").Range("A" & поз_16).Resize(3, 14).Value
[/vba]
И, кстати, да, как ниже уже написали, нужно прервать обработку событий и потом ее взад поставить
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = 0
    Application.EnableEvents = 0
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6")
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Range("B16").Resize(3, 14) = Sheets("Сбор16").Range("A" & поз_16).Resize(3, 14).Value
    Application.EnableEvents = 1
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 06.09.2016 в 10:43
K-SerJC Дата: Вторник, 06.09.2016, 10:44 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 242
Репутация: 36 ±
Замечаний: 0% ±

Excel 2013
у тебя зацикливание получается
процедурой
Sheets("Форма").Range("B16:O18") = Sheets("Сбор16").Range("A" & поз_16 & ":N" & поз_16 + 2)
ты вносишь изм. в лист и заново инициируешь Worksheets_Change
[moder]Нарушение п.3 Правил форума в части тегов. Замечание.[/moder]


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщениеу тебя зацикливание получается
процедурой
Sheets("Форма").Range("B16:O18") = Sheets("Сбор16").Range("A" & поз_16 & ":N" & поз_16 + 2)
ты вносишь изм. в лист и заново инициируешь Worksheets_Change
[moder]Нарушение п.3 Правил форума в части тегов. Замечание.[/moder]

Автор - K-SerJC
Дата добавления - 06.09.2016 в 10:44
devilkurs Дата: Вторник, 06.09.2016, 10:53 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
pabchek, добрый день

[vba]
Код

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6").Value
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Application.EnableEvents = False'отключить реакцию на Change на момент вставки значений на лист самим же Change
    Sheets("Форма").Range("B16:O18").Value = Sheets("Сбор16").Range("A" & поз_16 & ":N" & поз_16 + 2).Value
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
[/vba]

[p.s.] пока отвечал уже дали ответы ))))




Сообщение отредактировал devilkurs - Вторник, 06.09.2016, 10:55
 
Ответить
Сообщениеpabchek, добрый день

[vba]
Код

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6").Value
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Application.EnableEvents = False'отключить реакцию на Change на момент вставки значений на лист самим же Change
    Sheets("Форма").Range("B16:O18").Value = Sheets("Сбор16").Range("A" & поз_16 & ":N" & поз_16 + 2).Value
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
[/vba]

[p.s.] пока отвечал уже дали ответы ))))

Автор - devilkurs
Дата добавления - 06.09.2016 в 10:53
SLAVICK Дата: Вторник, 06.09.2016, 10:58 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 1962
Репутация: 669 ±
Замечаний: 0% ±

2007,2010,2013,2016
Еще, как вариант - можно использовать переменную как флаг: возводить и снимать.
Иногда так лучше чем события включать-отключать :D .
[vba]
Код
Dim b As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
    If b Then Exit Sub Else b = True
    Application.ScreenUpdating = 0
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6")
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Range("B16").Resize(3, 14) = Sheets("Сбор16").Range("A" & поз_16).Resize(3, 14).Value
End Sub
[/vba]
Забыл поставить снятие флага - правильнее так:
[vba]
Код
Dim b As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
    If b Then b = False: Exit Sub
    b = True
    Application.ScreenUpdating = 0
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6")
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Range("B16").Resize(3, 14) = Sheets("Сбор16").Range("A" & поз_16).Resize(3, 14).Value
End Sub
[/vba]
К сообщению приложен файл: 0400467.xlsb(21Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 06.09.2016, 11:06
 
Ответить
СообщениеЕще, как вариант - можно использовать переменную как флаг: возводить и снимать.
Иногда так лучше чем события включать-отключать :D .
[vba]
Код
Dim b As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
    If b Then Exit Sub Else b = True
    Application.ScreenUpdating = 0
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6")
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Range("B16").Resize(3, 14) = Sheets("Сбор16").Range("A" & поз_16).Resize(3, 14).Value
End Sub
[/vba]
Забыл поставить снятие флага - правильнее так:
[vba]
Код
Dim b As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
    If b Then b = False: Exit Sub
    b = True
    Application.ScreenUpdating = 0
    On Error Resume Next
    кл_ = Sheets("Форма").Range("I6")
    поз_16 = WorksheetFunction.Match(кл_, Sheets("Сбор16").Range("A:A"), 0)
    Range("B16").Resize(3, 14) = Sheets("Сбор16").Range("A" & поз_16).Resize(3, 14).Value
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 06.09.2016 в 10:58
pabchek Дата: Вторник, 06.09.2016, 10:59 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 691
Репутация: 152 ±
Замечаний: 0% ±

Excel 2007
О да!!
зацикливание получается

вон оно где собака порылась))
Спасибо всем большое!


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
СообщениеО да!!
зацикливание получается

вон оно где собака порылась))
Спасибо всем большое!

Автор - pabchek
Дата добавления - 06.09.2016 в 10:59
pabchek Дата: Вторник, 06.09.2016, 11:06 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 691
Репутация: 152 ±
Замечаний: 0% ±

Excel 2007
Саш _Boroda_, а можешь пояснить, почему лучше
Resize(3, 14)
чем прямое присвоение?


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
СообщениеСаш _Boroda_, а можешь пояснить, почему лучше
Resize(3, 14)
чем прямое присвоение?

Автор - pabchek
Дата добавления - 06.09.2016 в 11:06
devilkurs Дата: Вторник, 06.09.2016, 11:07 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
SLAVICK, прошу прощения, но при данном флаге
[vba]
Код
If b Then Exit Sub Else b = True
[/vba]
получается, что при последующих изменениях пользователем ячеек событие Change отбивает.
Т.е. где-то надо дополнительно флаг переводить в True
Я правильно понимаю?


 
Ответить
СообщениеSLAVICK, прошу прощения, но при данном флаге
[vba]
Код
If b Then Exit Sub Else b = True
[/vba]
получается, что при последующих изменениях пользователем ячеек событие Change отбивает.
Т.е. где-то надо дополнительно флаг переводить в True
Я правильно понимаю?

Автор - devilkurs
Дата добавления - 06.09.2016 в 11:07
SLAVICK Дата: Вторник, 06.09.2016, 11:10 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 1962
Репутация: 669 ±
Замечаний: 0% ±

2007,2010,2013,2016
почему лучше

Код - читабельнее и проще для восприятия ... как следствие - уменьшение возможности возникновения ошибок и ускорение внесения изменений в код.
прошу прощения,

за что - Вы правы ;) .
флаг переводить в True

я уже исправил код выше. :D .


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
почему лучше

Код - читабельнее и проще для восприятия ... как следствие - уменьшение возможности возникновения ошибок и ускорение внесения изменений в код.
прошу прощения,

за что - Вы правы ;) .
флаг переводить в True

я уже исправил код выше. :D .

Автор - SLAVICK
Дата добавления - 06.09.2016 в 11:10
pabchek Дата: Вторник, 06.09.2016, 11:11 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 691
Репутация: 152 ±
Замечаний: 0% ±

Excel 2007
надо дополнительно флаг переводить в True

Совершенно верно. Проверил на своем примере - тоже циклит.
[p.s.]Пока писал, уже исправили


"Учиться, учиться и еще раз учиться!"
WM: R399923528092


Сообщение отредактировал pabchek - Вторник, 06.09.2016, 11:12
 
Ответить
Сообщение
надо дополнительно флаг переводить в True

Совершенно верно. Проверил на своем примере - тоже циклит.
[p.s.]Пока писал, уже исправили

Автор - pabchek
Дата добавления - 06.09.2016 в 11:11
_Boroda_ Дата: Вторник, 06.09.2016, 11:13 | Сообщение № 11
Группа: Модераторы
Ранг: Экселист
Сообщений: 10334
Репутация: 4357 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
вон оно где собака порылась))
Собака не там порылась на самом деле, а в
.Value
Убери его из кода и у тебя ничего не получится

почему лучше

Добавлю к написанному выше Славиком - обращение к переменной происходит только один раз, а не 2. Если это один раз, то разница во времени ничтожна, а вот если в большом цикле ...


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
вон оно где собака порылась))
Собака не там порылась на самом деле, а в
.Value
Убери его из кода и у тебя ничего не получится

почему лучше

Добавлю к написанному выше Славиком - обращение к переменной происходит только один раз, а не 2. Если это один раз, то разница во времени ничтожна, а вот если в большом цикле ...

Автор - _Boroda_
Дата добавления - 06.09.2016 в 11:13
pabchek Дата: Вторник, 06.09.2016, 11:28 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 691
Репутация: 152 ±
Замечаний: 0% ±

Excel 2007
(в оригинале выбор из сводной, но не суть)

К сожалению, оказалось, что это критично.
Если выбрать значение из фильтра сводной - цикл

[p.s.]И, к слову сказать, если не использовать сводную, то работает и без
[vba]
Код
    Application.EnableEvents = 0
    ***
    Application.EnableEvents = 1
[/vba]
К сообщению приложен файл: 8840185.xlsb(21Kb)


"Учиться, учиться и еще раз учиться!"
WM: R399923528092


Сообщение отредактировал pabchek - Вторник, 06.09.2016, 11:35
 
Ответить
Сообщение
(в оригинале выбор из сводной, но не суть)

К сожалению, оказалось, что это критично.
Если выбрать значение из фильтра сводной - цикл

[p.s.]И, к слову сказать, если не использовать сводную, то работает и без
[vba]
Код
    Application.EnableEvents = 0
    ***
    Application.EnableEvents = 1
[/vba]

Автор - pabchek
Дата добавления - 06.09.2016 в 11:28
devilkurs Дата: Вторник, 06.09.2016, 11:49 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
И, к слову сказать, если не использовать сводную, то работает и без

Это необходимо для ускорения работы макроса, т.к. при вставке на лист значений повторно инициируется выполнение события Change. Отключив реакцию событий Change выполняется один раз.
А про сводную к сожалению не могу подсказать ничего.


 
Ответить
Сообщение
И, к слову сказать, если не использовать сводную, то работает и без

Это необходимо для ускорения работы макроса, т.к. при вставке на лист значений повторно инициируется выполнение события Change. Отключив реакцию событий Change выполняется один раз.
А про сводную к сожалению не могу подсказать ничего.

Автор - devilkurs
Дата добавления - 06.09.2016 в 11:49
_Boroda_ Дата: Вторник, 06.09.2016, 12:00 | Сообщение № 14
Группа: Модераторы
Ранг: Экселист
Сообщений: 10334
Репутация: 4357 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Если выбрать значение из фильтра сводной - цикл

Цикла как такового нет, но подвисает знатно. Причину пока не понял.
если не использовать сводную, то работает и без
Да, работает, но попробуй пройтись в пошаговом режиме (через F8) и сам увидишь.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Если выбрать значение из фильтра сводной - цикл

Цикла как такового нет, но подвисает знатно. Причину пока не понял.
если не использовать сводную, то работает и без
Да, работает, но попробуй пройтись в пошаговом режиме (через F8) и сам увидишь.

Автор - _Boroda_
Дата добавления - 06.09.2016 в 12:00
pabchek Дата: Вторник, 06.09.2016, 12:49 | Сообщение № 15
Группа: Проверенные
Ранг: Ветеран
Сообщений: 691
Репутация: 152 ±
Замечаний: 0% ±

Excel 2007
[vba]
Код
Application.ScreenUpdating = 0
[/vba]
Вешает


"Учиться, учиться и еще раз учиться!"
WM: R399923528092


Сообщение отредактировал pabchek - Вторник, 06.09.2016, 12:49
 
Ответить
Сообщение[vba]
Код
Application.ScreenUpdating = 0
[/vba]
Вешает

Автор - pabchek
Дата добавления - 06.09.2016 в 12:49
Manyasha Дата: Вторник, 06.09.2016, 12:50 | Сообщение № 16
Группа: Модераторы
Ранг: Старожил
Сообщений: 1832
Репутация: 766 ±
Замечаний: 0% ±

Excel 2007, 2010
Application.ScreenUpdating = 0
Вешает

ага, если добавить в конец [vba]
Код
Application.ScreenUpdating = True
[/vba]то все нормально работает %)


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
Application.ScreenUpdating = 0
Вешает

ага, если добавить в конец [vba]
Код
Application.ScreenUpdating = True
[/vba]то все нормально работает %)

Автор - Manyasha
Дата добавления - 06.09.2016 в 12:50
pabchek Дата: Вторник, 06.09.2016, 13:31 | Сообщение № 17
Группа: Проверенные
Ранг: Ветеран
Сообщений: 691
Репутация: 152 ±
Замечаний: 0% ±

Excel 2007
если добавить

Истинно так. Спасибо, Марина!
А есть мысли почему?


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
Сообщение
если добавить

Истинно так. Спасибо, Марина!
А есть мысли почему?

Автор - pabchek
Дата добавления - 06.09.2016 в 13:31
Manyasha Дата: Вторник, 06.09.2016, 13:43 | Сообщение № 18
Группа: Модераторы
Ранг: Старожил
Сообщений: 1832
Репутация: 766 ±
Замечаний: 0% ±

Excel 2007, 2010
А есть мысли почему?

Нет, видимо глюк такой.
Сама засела за поиск информации, интересно же))

Экспериментирую с макросом без возврата обновления экрана:
отфильтровала сводную - все зависло. Перехожу в редактор VBA, в immediate пишу ?Application.ScreenUpdating, нажимаю enter, выдает False, после чего, обновление само включается и при следующем запросе в immediate, оно уже True... Непонятненько <_<


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
А есть мысли почему?

Нет, видимо глюк такой.
Сама засела за поиск информации, интересно же))

Экспериментирую с макросом без возврата обновления экрана:
отфильтровала сводную - все зависло. Перехожу в редактор VBA, в immediate пишу ?Application.ScreenUpdating, нажимаю enter, выдает False, после чего, обновление само включается и при следующем запросе в immediate, оно уже True... Непонятненько <_<

Автор - Manyasha
Дата добавления - 06.09.2016 в 13:43
SLAVICK Дата: Вторник, 06.09.2016, 15:53 | Сообщение № 19
Группа: Модераторы
Ранг: Старожил
Сообщений: 1962
Репутация: 669 ±
Замечаний: 0% ±

2007,2010,2013,2016
зы ну так макрос - то отрабатывает.
Просто экран не включается обратно - у мну так часто бывает при отладке кода.
Забыл включить экран обратно - получи такой эффект.
Поэтому я сделал себе на панели закладок кнопку для включения всех опций обратно. и если такое случилось то делаю следующее:

Win D (чтобы свернуть все окна и показать раб. стол)
Потом кликаю мышем по экселю.
Потом нажимаю кнопку запуска макроса :D .
Ну или второй вариант - как Марина сделала написать в редакторе новый макрос(или найти уже готовый)
[vba]
Код
Application.ScreenUpdating = 1
[/vba]
и запустить его. Но 1-й способ быстрее и удобнее. yes
К сообщению приложен файл: 2556664.jpg(60Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщениезы ну так макрос - то отрабатывает.
Просто экран не включается обратно - у мну так часто бывает при отладке кода.
Забыл включить экран обратно - получи такой эффект.
Поэтому я сделал себе на панели закладок кнопку для включения всех опций обратно. и если такое случилось то делаю следующее:

Win D (чтобы свернуть все окна и показать раб. стол)
Потом кликаю мышем по экселю.
Потом нажимаю кнопку запуска макроса :D .
Ну или второй вариант - как Марина сделала написать в редакторе новый макрос(или найти уже готовый)
[vba]
Код
Application.ScreenUpdating = 1
[/vba]
и запустить его. Но 1-й способ быстрее и удобнее. yes

Автор - SLAVICK
Дата добавления - 06.09.2016 в 15:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Worksheet_Change - сбой при выполнении (Макросы/Sub)
Страница 1 из 11
Поиск:

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