Страница 1 из 1
Макросы в Exel
Добавлено: 26 мар 2008, 10:52
Aldrun
Мне нужно сделать отчет в Exel. Отчет получился из ряда сводных таблиц с выборкой по ВПР. Получается при заполнении данных на одном листе Exel нужно обновлять промежуточную сводную таблицу на другом листе, и только на третьем обновив сводную таблицу получить результат. Мне нужно избежать промежуточных обновлений. Посоветовали сделать макрос. Как его сделать подскажите пожалуйста кто нибудь???

Re: Макросы в Exel
Добавлено: 26 мар 2008, 11:03
VictorM
Re: Макросы в Exel
Добавлено: 26 мар 2008, 11:11
Aldrun
""Можно "повесить" на кнопку "Обновить" макрос и запускать его при обновлении листа."" Можно расписать поподробнее как это сделать? Я с макросами не разу не сталкивался...
Re: Макросы в Exel
Добавлено: 26 мар 2008, 11:25
VictorM
В модуле рабочего листа с данными размещаете код:
Код: Выделить всё
Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Лист2").PivotTables("СводнаяТаблица1").PivotCache.Refresh
End Sub
теперь при любых изменениях на листе будет срабатывать макрос имитирующий нажатие кнопки "Обновить".
В примере содная таблица находится на Листе2
Re: Макросы в Exel
Добавлено: 26 мар 2008, 11:28
Aldrun
Спасибо. Сейчас попробую...
Re: Макросы в Exel
Добавлено: 01 апр 2008, 11:42
Aldrun
День добрый! У меня большая проблема с этим макросом - все тормозит при каждом щелчке мыши...
Можно ли сделать макрос который будет обновлять все сводные таблицы в документе при переходе с одного листа на другой. Помогите пожалуйста кто-нибудь.

Re: Макросы в Exel
Добавлено: 01 апр 2008, 13:37
Serge_Bliznykov
Ну, если Вы знаете, что делаете...
Вместо SelectionChange вставьте его в макросы книги (щелкните на ЭтаКнига)
и там есть
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub
а может лучше его оставить в листе, только вместо реакции на смену текущей ячейки сделать
повесить этот макрос на изменение данных:
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Re: Макросы в Exel
Добавлено: 01 апр 2008, 13:38
VictorM
Aldrun, на то он и
Worksheet_SelectionChange 
. При большом объеме данных тормоза будут приличные. Попробуйте сделать так. Закоментируйте код в модуле рабочего листа с данными, а в модуле листа таблицы поместите
Код: Выделить всё
Private Sub Worksheet_Activate()
Sheets("Лист2").PivotTables("СводнаяТаблица1").PivotCache.Refresh
End Sub
теперь макрос будет срабатывать при переходе с листа данных на лист таблицы.
Re: Макросы в Exel
Добавлено: 01 апр 2008, 13:41
Aldrun
Спасибо всем. Попробую разобраться

Re: Макросы в Exel
Добавлено: 01 апр 2008, 13:45
VictorM
Serge_Bliznykov, конечно, вариантов как всегда, куча

. Теперь самому
Aldrun выбирать, что ему больше подойдет.