
Макросы в Exel
Модератор: Naeel Maqsudov
Мне нужно сделать отчет в Exel. Отчет получился из ряда сводных таблиц с выборкой по ВПР. Получается при заполнении данных на одном листе Exel нужно обновлять промежуточную сводную таблицу на другом листе, и только на третьем обновив сводную таблицу получить результат. Мне нужно избежать промежуточных обновлений. Посоветовали сделать макрос. Как его сделать подскажите пожалуйста кто нибудь??? 

- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Aldrun, а вот это Вы смотрели?
http://forum.developing.ru/showthread.php?t=13360
http://forum.developing.ru/showthread.php?t=13360
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
""Можно "повесить" на кнопку "Обновить" макрос и запускать его при обновлении листа."" Можно расписать поподробнее как это сделать? Я с макросами не разу не сталкивался...VictorM писал(а):Aldrun, а вот это Вы смотрели?
http://forum.developing.ru/showthread.php?t=13360
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
В модуле рабочего листа с данными размещаете код:
теперь при любых изменениях на листе будет срабатывать макрос имитирующий нажатие кнопки "Обновить".
В примере содная таблица находится на Листе2
Код: Выделить всё
Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Лист2").PivotTables("СводнаяТаблица1").PivotCache.Refresh
End Sub
В примере содная таблица находится на Листе2
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Спасибо. Сейчас попробую...
День добрый! У меня большая проблема с этим макросом - все тормозит при каждом щелчке мыши...
Можно ли сделать макрос который будет обновлять все сводные таблицы в документе при переходе с одного листа на другой. Помогите пожалуйста кто-нибудь.
Можно ли сделать макрос который будет обновлять все сводные таблицы в документе при переходе с одного листа на другой. Помогите пожалуйста кто-нибудь.

-
- Сообщения: 375
- Зарегистрирован: 31 авг 2007, 03:06
Ну, если Вы знаете, что делаете...
Вместо 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
Вместо 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
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Aldrun, на то он и Worksheet_SelectionChange
. При большом объеме данных тормоза будут приличные. Попробуйте сделать так. Закоментируйте код в модуле рабочего листа с данными, а в модуле листа таблицы поместите
теперь макрос будет срабатывать при переходе с листа данных на лист таблицы.

Код: Выделить всё
Private Sub Worksheet_Activate()
Sheets("Лист2").PivotTables("СводнаяТаблица1").PivotCache.Refresh
End Sub
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Спасибо всем. Попробую разобраться 

- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Serge_Bliznykov, конечно, вариантов как всегда, куча
. Теперь самому Aldrun выбирать, что ему больше подойдет.

"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".