Сначала рассмотрим некоторые предпосылки.
-
Excel позволяет дублировать имена для форм. То есть вы можете иметь как ChartObject, так и овальную форму на одном и том же рабочем листе с точно таким же именем. Вы также можете использовать две диаграммы, обозначенные как “Диаграмма 2”. Если вы попытаетесь ссылаться на фигуру с дублирующимся именем, например.
ActiveSheet.Shapes( “Dupe” ). Выберите,
excel, похоже, прибегает к возврату объекта с наименьшим ID (и дублирующимся именем).
- Невозможно (что я знаю) связать ActiveChart с соответствующей его формой.
Я хочу создать такую функцию, как
Функция GetAChartsShape (c как диаграмма) как Форма,
но я не знаю, как это сделать. Непосредственным использованием этого было бы форматирование выбранной диаграммы (поскольку нет способа глобального изменения шрифта диаграммы). Конечно, это может также иметь и другие виды использования.
Название формы, содержащей встроенную диаграмму (форма также является графическим объектом):
activechart.parent.name
или если c объявлен график:
c.parent.name
Но, конечно, вы знаете, что вам не нужно выбирать объект для работы над ним, поэтому просто делайте то, что вам нужно сделать на
c.parent
что позволяет избежать проблем с дублирующимися именами.