powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL Worksheet_Change
3 сообщений из 3, страница 1 из 1
EXCEL Worksheet_Change
    #39523454
Фотография Yagrus2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello world!
Есть лист со сводной таблицей, источником которой является OLAP-куб.
Для этого листа настроил реакцию на событие Change
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
    Dim WSH As Worksheet
    Set WSH = ThisWorkbook.Worksheets("Фил-СП (2)")
    Dim PVT_cnt As Integer
    PVT_cnt = WSH.PivotTables.Count
    ' Сводная таблица источник
    Dim PT_CP As PivotTable
    Set PT_CP = WSH.PivotTables("Без СП")
        A = Target.Column
        B = Target.Row
Application.ScreenUpdating = True
End Sub


Переменные A и B содержат номер столбца и строки измененной ячейки.

Если изменения вносятся в области очерченные красным, то A = B = 1. Например для формирования скрина менял ячейку B1, путем выбора из возможных.
Также не работает отключение анимации.

Как побороть это?
...
Рейтинг: 0 / 0
EXCEL Worksheet_Change
    #39523455
Фотография Yagrus2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
EXCEL Worksheet_Change
    #39523635
Фотография Yagrus2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yagrus2,
Изменив немного код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
    Dim WSH As Worksheet
    Set WSH = ThisWorkbook.Worksheets("Ôèë-ÑÏ (2)")
    ' Ñâîäíàÿ òàáëèöà èñòî÷íèê
    Dim PT_CP As PivotTable
    Set PT_CP = WSH.PivotTables("Áåç ÑÏ")
        A = Target.Column
        B = Target.Row
    Target.Activate
Application.ScreenUpdating = True
End Sub

провел ряд экспериментов в ходе которых выяснилось:
1. Если изменение - это манипуляция со сводной таблицей, то измененная ячейка определяется неверно.
1а. Меняем значение поля "Группы планирования" с ПОС на СЕР. Результат A=B=1 и активной становится вся область сводной таблицы

1б. Становимся на ячейку B8 и перетаскиваем "Филиал" из строк в фильтры.
Результат A=B=1 и активной становится вся область сводной таблицы

1в. Становимся на строку 6 и перетаскиваем "Дата. Календарная" из строк в фильтры. Результат A=B=1 и активной становится вся область сводной таблицы

1.г Ставлю галку отложить обновление макета, перетаскиваю поле "Филиал" в строки, "Дата. Календарная"
в столбцы и жму кнопку Обновить Результат A=1 B=3. Активной остается прежняя область сводной таблицы

2. Аналогичная ситуация получается, если источником для сводной таблицы является SQL-таблица.

Буду рад услышать ваши соображения по этому поводу!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL Worksheet_Change
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]