Текущее время: Пт, июл 18 2025, 19:26

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 13 2008, 21:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
YoungBDO написал(а):
И мой вопрос следующий: как же сделать так, чтобы каждый раз при обновлении рабочей книги отображалась только актуальная часть сводной таблицы? :?:

Как я понял, ты эту таблицу формируешь сам.
Тогда в чем проблема? Очищай лист лист при каждом обновлении.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 13 2008, 22:02 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вс, авг 10 2008, 20:47
Сообщения: 35
Откуда: Москва
Да, ты совершенно прав, таблицу сам формирую.

G написал:
Тогда в чем проблема? Очищай лист лист при каждом обновлении.

В том то и дело, что мне не полностью лист очищать надо, а только Range, который был "прорисован" предыдущей отработкой запросов.

Ну и ключевой вопрос как очищать? Есть какие-то стандартные VBA-функции/методы? Или все еще проще и в настройке Excel это где-то защито (тоже не нашел...)?

Пробовал сегодня Refresh - не канает, "старые" записи не пропадают :cry:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 14 2008, 09:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
YoungBDO написал(а):
Ну и ключевой вопрос как очищать? Есть какие-то стандартные VBA-функции/методы?


Я делал так:
Code:
    Dim rData As Range
    Set rData = Range("Data")
   
    rData.ClearContents
    rData.ClearFormats


Просто странно, что ты задаешь вопросы по ВБА на форуме по SAP...
На вба-шных форумах ответы будут качественнее, да и готовые решения наверняка есть. Плюс простой поиск в яндексе может много чего дать.
Да и пренебрегать стандартным средством записи макросов не стоит...
Нажал запись макроса, потом "Правка->Очистить->Все" и посмотрел, что в результате. Я, в свое время именно так и делал.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 14 2008, 09:05 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пт, окт 21 2005, 09:24
Сообщения: 832
Откуда: от верблюда...тоже:)
Пол: Мужской
YoungBDO написал(а):
Ну и ключевой вопрос как очищать? Есть какие-то стандартные VBA-функции/методы?

делай раз: сервис-макрос-начать запись...
делай два: выделяешь весь лист 3
делай три: правой кнопочкой над выделенной областью-очистить содержимое
делай четыре: сервис-макрос-остановить запись
делай пять: реализуешь этот же код для своего отчета

_________________
а подпись...а подписи не будет :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 14 2008, 10:32 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вс, авг 10 2008, 20:47
Сообщения: 35
Откуда: Москва
G написал:
Нажал запись макроса, потом "Правка->Очистить->Все" и посмотрел, что в результате. Я, в свое время именно так и делал.

В том то и дело, что я не хотел очищать все, что на листе, а только то, что относится к рабочей области таблицы. Собирался делать статическую шапку таблицы руками, но, похоже, придется ее динамическив VBA рисовать, так что, судя по всему, буду использовать твой вариант...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 14 2008, 10:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
YoungBDO написал(а):
G написал:
Нажал запись макроса, потом "Правка->Очистить->Все" и посмотрел, что в результате. Я, в свое время именно так и делал.

В том то и дело, что я не хотел очищать все, что на листе, а только то, что относится к рабочей области таблицы. Собирался делать статическую шапку таблицы руками, но, похоже, придется ее динамическив VBA рисовать, так что, судя по всему, буду использовать твой вариант...

Это очищает диапазон. Код, приведенный выше выдран как раз из такой же схемы -- шапка статичная.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 14 2008, 10:59 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вс, авг 10 2008, 20:47
Сообщения: 35
Откуда: Москва
G написал:
Это очищает диапазон. Код, приведенный выше выдран как раз из такой же схемы -- шапка статичная.

Мне придется динамически в VBA ее делать :cry: Тем более, совсем не понятно, как мне выбрать нижнюю границу Range от предыдущей отработки фильтра :?:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 14 2008, 12:11 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вс, авг 10 2008, 20:47
Сообщения: 35
Откуда: Москва
Вопрос видоизменяется :P
Как сделать так, чтобы вот этот кусок кода:
Цитата:
Range(GRID.Address).ClearContents
Range(GRID.Address).ClearFormats

срабатывал при изменении значений фильтра?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 14 2008, 12:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
YoungBDO написал(а):
G написал:
Это очищает диапазон. Код, приведенный выше выдран как раз из такой же схемы -- шапка статичная.

Мне придется динамически в VBA ее делать :cry: Тем более, совсем не понятно, как мне выбрать нижнюю границу Range от предыдущей отработки фильтра :?:


Я запоминаю при формировании:
Code:
    Range(rData.Cells(1, 1), rData.Cells(IIf(i > 1, i - 1, 1), rData.Columns.Count)).Name = "Data"

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 18 2008, 14:37 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вс, авг 10 2008, 20:47
Сообщения: 35
Откуда: Москва
G написал:
Как ни странно, но в How To… Build up a Simple Offline Planning Scenario in Bex Analyzer довольно много примеров по работе c семеркой на VBA.

Если я правильно понял, логика работы макроса такова:
1. Сначала с рабочего листа (GRID) данные копируются во внутренние таблицы (LTabs).
2. Данные из внутренних таблиц копируются назад на рабочий лист.

Но мне не понятно следующее: где в этом макросе стоит запрет на запись с рабочего листа во внутреннюю таблицу?
Ведь если следовать последовательности выполнения макроса (1->2), то сначала должны "затереться" данные во внутренней таблице, таким образом мы теряем все, что запланировали в offline. :roll:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 18 2008, 15:27 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вс, авг 10 2008, 20:47
Сообщения: 35
Откуда: Москва
Вот за счет этого?
Цитата:
Application.ScreenUpdating = False

То есть во внутренню таблицу мы пишем то, что в данный момент на экране, а изменение отображаемых данных разрешено только после записи данных из внутренней таблицы на рабочий лист? :roll:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 18 2008, 21:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Если честно, то хаутушку не разбирал еще. В планах пока.
А также:
1. Такого понятия как "внутреняя таблица" в VBA нет.
2. Я вроде бы уже писал, что Application.ScreenUpdating = False нужно только для увеличения производительности макроса -- исключается перерисовка всего окна Excel при изменении значения каждой ячейки.
Цитата:
ScreenUpdating Property
...
Turn screen updating off to speed up your macro code. You won't be able to see what the macro is doing, but it will run faster.

Remember to set the ScreenUpdating property back to True when your macro ends.
...

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 19 2008, 08:20 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 18 2008, 17:00
Сообщения: 110
Откуда: From Hell
Пол: Мужской
G написал:
1. Такого понятия как "внутреняя таблица" в VBA нет.

Вот коммент из листинга:
Цитата:
'Save data to internal tables

Так что, скорее, это не объект VBA, а объект рабочей книги Analyzer'а.

G написал:
2. Я вроде бы уже писал, что Application.ScreenUpdating = False нужно только для увеличения производительности макроса -- исключается перерисовка всего окна Excel при изменении значения каждой ячейки.

Если не ошибаюсь, то как раз эта "фича" в примере и используется для того, чтобы при логине на сервер и нажатии на Refresh не происходило перезаписи значений ячеек данными с сервера. Иначе как бы работало offline-планирование? :wink:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 19 2008, 10:40 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Я же писал уже как это сделать :)
Давай мыло -- пример пришлю похожий, думаю сможешь адаптировать.
Суть такая: есть в экселе такая функциональность -- имена, их можно использовать для запоминания границ.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 20 2008, 00:16 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 18 2008, 17:00
Сообщения: 110
Откуда: From Hell
Пол: Мужской
G написал:
Я же писал уже как это сделать :)
Давай мыло -- пример пришлю похожий, думаю сможешь адаптировать.
Суть такая: есть в экселе такая функциональность -- имена, их можно использовать для запоминания границ.

Отписал в личку. :roll:
P.S. А вообще, хаутушка полезная, сегодня кусок из нее на ура заюзал :P

_________________
В 9.00 начался и в 00.45 закончился 7-й 8-часовой рабочий день 5-дневной рабочей недели...


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB