powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сделать процедуру для любого изменения в xls
10 сообщений из 10, страница 1 из 1
Как сделать процедуру для любого изменения в xls
    #34670016
detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сделать процедуру, которая бы работала при любых изменениях в файле xls? Конкретнее - для старых версий Excel при любых изменениях в сводных таблицах нужно вызвать процедуру, которая бы передёргивала формат диаграмм (загружала сохранённый).
...
Рейтинг: 0 / 0
Как сделать процедуру для любого изменения в xls
    #34670131
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень понятно Что значит передёргивала формат диаграмм?
Если просто обновить диаграммы, так они сами обновляются при изменениии исходных данных!
...
Рейтинг: 0 / 0
Как сделать процедуру для любого изменения в xls
    #34670215
rimsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Меня тоже интересует аналогичный вопрос, если я например из 1С создаю новую строку на листе Excel как-то можно засечь это событие средствами VBA ну там процедуркой типа CommandButton1_Click()?
...
Рейтинг: 0 / 0
Как сделать процедуру для любого изменения в xls
    #34670252
detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С форматом всё ок - я отформатировал диаграмму как надо, записал это в специальный тип, и теперь когда надо вызову

chrt.Chart.ApplyCustomType ChartType:=xlUserDefined, TypeName:="ыыыыыы"

А вот как событие сделать - не знаю.
...
Рейтинг: 0 / 0
Как сделать процедуру для любого изменения в xls
    #34670277
detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, Worksheet_Change не помогает - не ловит изменение сводной диаграммы, вставленной в лист.
...
Рейтинг: 0 / 0
Как сделать процедуру для любого изменения в xls
    #34670471
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
detailкстати, Worksheet_Change не помогает - не ловит изменение сводной диаграммы, вставленной в лист.

Вообще я опять ничего не понял, т.к. вы не хотите нормаль всё описать, а ещё лучше пример.

но всё же:
Изменение сводной диаграммы у вас как происходит?
Может там же указать и требуемый тип.
...
Рейтинг: 0 / 0
Как сделать процедуру для любого изменения в xls
    #34671607
detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хммм, ну как проще объяснить-то...

Есть просто файл, в котором сводная таблица и по ней построенная сводная диаграмма. Допустим, такая:

1) категории страниц - магазины
2) категории строк - дата (неделя)
3) категория столбцов - показатель. Показателей 3: выручка, себестоимость, рентабельность. Поле Рентабельность - вычисляемое в самой сводной таблице.

По этим трём показателям я сделал диаграмму. Естественно, на одной оси невозможно отложить обороты в рублях и % рентабельности. Назначаю вторую ось для рентабельности.

Такой отчёт ложится в папку с общим доступом и его может брать пользователь. Если он поменяет категорию страниц (выберет конкретный магазин) или строк (даты), то формат диаграммы получится стандартным, т.е. рентабельность по той же оси (тут была ссылка, где написано, что "слетает", но это сейчасне важно).

Я сохранил свой формат в типах диаграмм, как дополнительный. Его можно вызвать строкой из VBA, приведённой выше.

Мне собственно нужно чтобы, когда пользователь вращает данные в сводной таблице, как описано выше, вызывался мой скрипт, устанавливающий формат диаграммы.
...
Рейтинг: 0 / 0
Как сделать процедуру для любого изменения в xls
    #34671808
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изменения в сводной таблице отлично отлавливаются
Private Sub Worksheet_Change(ByVal Target As Range)
А если имеется ввиду изменение сводной диаграммы, то расположи исходную сводную для диаграммы на том же листе что и диаграмма и тоже всё будет ок. или если сводная табл для диаграммы на другом листе, то код поместите в модуль того же листа где исходная сводная, а не того где диаграмма!


А вообще я лично не очень люблю сводные диаграммы.
Предпочитаю обычные, а уже данные для них можно и из сводных потянуть
или прямиком из исходных данных
...
Рейтинг: 0 / 0
Как сделать процедуру для любого изменения в xls
    #34688528
detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема: если сохранить формат диаграммы под своим типом, на другом компьютере этот тип не будет доступен. Можно ли сохранить тип в самом файле?
...
Рейтинг: 0 / 0
Как сделать процедуру для любого изменения в xls
    #34689396
detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, воркэраунд:
на самом деле, при обновлении сводной диаграммы слетает не всё форматирование, а только относящееся к рядам. Поэтому обход такой: сбрасываем форматирование, запускаем запись макроса, устанавливаем нужные форматы рядов данных (только их!). Из получившегося макроса берём нужный код. В макросе запишется установка всех свойств, но на самом деле нужно менять только то, что нужно менять (каламбур), остальное будет дефолтным.

Мой код (на листе - 7 диаграмм)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Private Sub workbook_open()

Call update_diagrams

End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)

Call update_diagrams

End Sub

Private Sub update_diagrams()

With Worksheets("Диаграммы - Продукт")

' значения 3-го показателя должны быть отложены по вспомогательной оси
.ChartObjects( 1 ).Chart.SeriesCollection( 3 ).AxisGroup =  2 

' на пирогЕ подписываем названия категорий и их доли
.ChartObjects( 3 ).Chart.SeriesCollection( 1 ).ApplyDataLabels AutoText:=True, LegendKey:= _
        False, HasLeaderLines:=True, ShowSeriesName:=False, ShowCategoryName:= _
        True, ShowValue:=False, ShowPercentage:=True, ShowBubbleSize:=False

End With

End Sub
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сделать процедуру для любого изменения в xls
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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