Макросы в Exel

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Aldrun
Сообщения: 11
Зарегистрирован: 26 мар 2008, 10:11

Мне нужно сделать отчет в Exel. Отчет получился из ряда сводных таблиц с выборкой по ВПР. Получается при заполнении данных на одном листе Exel нужно обновлять промежуточную сводную таблицу на другом листе, и только на третьем обновив сводную таблицу получить результат. Мне нужно избежать промежуточных обновлений. Посоветовали сделать макрос. Как его сделать подскажите пожалуйста кто нибудь??? :confused:
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Aldrun, а вот это Вы смотрели?
http://forum.developing.ru/showthread.php?t=13360
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Aldrun
Сообщения: 11
Зарегистрирован: 26 мар 2008, 10:11

VictorM писал(а):Aldrun, а вот это Вы смотрели?
http://forum.developing.ru/showthread.php?t=13360
""Можно "повесить" на кнопку "Обновить" макрос и запускать его при обновлении листа."" Можно расписать поподробнее как это сделать? Я с макросами не разу не сталкивался...
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

В модуле рабочего листа с данными размещаете код:

Код: Выделить всё

Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Лист2").PivotTables("СводнаяТаблица1").PivotCache.Refresh
End Sub
теперь при любых изменениях на листе будет срабатывать макрос имитирующий нажатие кнопки "Обновить".
В примере содная таблица находится на Листе2
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Aldrun
Сообщения: 11
Зарегистрирован: 26 мар 2008, 10:11

Спасибо. Сейчас попробую...
Aldrun
Сообщения: 11
Зарегистрирован: 26 мар 2008, 10:11

День добрый! У меня большая проблема с этим макросом - все тормозит при каждом щелчке мыши...
Можно ли сделать макрос который будет обновлять все сводные таблицы в документе при переходе с одного листа на другой. Помогите пожалуйста кто-нибудь. :confused:
Serge_Bliznykov
Сообщения: 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
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Aldrun, на то он и Worksheet_SelectionChange :rolleyes: . При большом объеме данных тормоза будут приличные. Попробуйте сделать так. Закоментируйте код в модуле рабочего листа с данными, а в модуле листа таблицы поместите

Код: Выделить всё

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

Спасибо всем. Попробую разобраться :)
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Serge_Bliznykov, конечно, вариантов как всегда, куча :) . Теперь самому Aldrun выбирать, что ему больше подойдет.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Ответить