Форма диаграммы Excel не применяется

У меня есть лист Excel, в котором диаграмма создается с помощью VBA. Проблема в том, что после создания диаграммы я установил ее форму на встроенный стиль формы. Но когда я выполняю следующий код, ничего не происходит.

ActiveSheet.Shapes("AdoptChart").Select
ActiveSheet.ChartObjects("AdoptChart").Activate
ActiveSheet.Shapes("AdoptChart").ShapeStyle = msoShapeStylePreset22

Когда эта строка выполняется ActiveSheet.Shapes("AdoptChart").ShapeStyle = msoShapeStylePreset22, свойство .ShapeStyle не обновляется, т. е. до этой строки оно было равно 0, а после выполнения этой строки по-прежнему равно 0.

Это был код, который я получил, записав макрос и вручную установив стиль формы диаграммы.

Я использую Excel 2010, но файл Excel 2003 года (я запускаю его в режиме совместимости).

EDIT: Это макрос, который я получил после ручного выбора формы.

Sub shape()
'
' shape Macro
'

'
    ActiveSheet.Shapes("AdoptChart").ShapeStyle = msoShapeStylePreset22
    Range("I7").Select
End Sub

person Trum    schedule 11.02.2013    source источник
comment
Самая стабильная версия Excel (для меня и, по крайней мере, для большинства, кого я знаю) — 2003. Затем 2010. Итак, 1.ваша диаграмма изначально работает в 2003? 2. Вы пытаетесь изменить ShapeStyle таблицы Chart DataLabels? Если метки данных, то ShapeStyle не поддерживается. 3. Можете ли вы попробовать записать такой же макрос на новый лист и посмотреть, как он работает?   -  person bonCodigo    schedule 11.02.2013


Ответы (1)


Согласно моему комментарию, я бы посоветовал вам записать макрос для новой книги Excel 2003, открытой в 2010 году в совместимом режиме. Таким образом, вы можете использовать ленту 2010, как показано в этом справочнике. Однако очень важно знать, какую версию Excel вы собираетесь использовать в дальнейшем с этими диаграммами. Будет ли это в 2010 или 2003... когда ShapeStyle будет добавлено в 2007...

2. На вкладке Формат выполните одно из следующих действий:

В группе «Текущий выбор» нажмите «Формат выбора», а затем в диалоговом окне «Формат» выберите нужные параметры форматирования. В группе «Стили фигур» щелкните изображение кнопки «Дополнительно», а затем выберите стиль.

Изображение ленты Excel:

введите здесь описание изображения

В группе «Стили фигур» нажмите «Заливка фигуры», «Контур фигуры» или «Эффекты фигуры», а затем выберите нужные параметры форматирования.

Проверьте эту статью на сайте Джона Пельтье , сравнение кода между 2007 и 2003 годами очень информативно. Так почему бы вам не СОХРАНИТЬ КНИГУ В EXCEL 2010?

Sub FormatConnector2003(oConnector As Shape)
  With oConnector
    If .Connector Or .Type = msoLine Then
      ' rough approximation of the Excel 2007 preset line style #17
      .Line.EndArrowheadStyle = msoArrowheadTriangle
      .Line.Weight = 2
      .Line.ForeColor.RGB = RGB(192, 80, 77)
      .Shadow.Type = msoShadow6
      .Shadow.IncrementOffsetX -4.5
      .Shadow.IncrementOffsetY -4.5
      .Shadow.ForeColor.RGB = RGB(192, 192, 192)
      .Shadow.Transparency = 0.5
      .Visible = msoTrue
    End If
  End With
End Sub

Sub FormatConnector2007(oConnector As Shape)
  With oConnector
    If .Connector Or .Type = msoLine Then
      .Line.EndArrowheadStyle = msoArrowheadTriangle
      .ShapeStyle = msoLineStylePreset17
    End If
  End With
End Sub
person bonCodigo    schedule 11.02.2013
comment
Это будет 2010 год (но поскольку у меня были проблемы с полным преобразованием его в 2010 год, поэтому я запускаю его в режиме совместимости). Пожалуйста, смотрите РЕДАКТИРОВАТЬ. - person Trum; 11.02.2013
comment
Предоставленный вами код устанавливает не msoShapeStylePreset22, а msoLineStylePreset17. Причина, по которой я не сохраняю его как 2010, заключается в том, что надстройка не работает, если я конвертирую ее в версию 2010 года. - person Trum; 11.02.2013
comment
Код, который я предоставил, является просто демонстрационным образцом. Просто чтобы показать вам направление. Не точный код :) Если ваша надстройка не работает в 2010 году, можно ли как-то уточнить у владельца надстройки, может ли она поддерживать 2010 год, так как вы собираетесь использовать 2010 год полностью? - person bonCodigo; 11.02.2013
comment
Это надстройка собственной разработки, и разработчики не контактируют с ней, так что это не вариант. - person Trum; 11.02.2013