Я совершенно новый для VBA. Я написал макрос, который создает около 10 сводных диаграмм и некоторых нормальных диаграмм после фильтрации и резки некоторых данных из электронной таблицы базы данных. Теперь я хочу написать подраздел, который проходит через одно и то же форматирование. Суб выглядит следующим образом:Доступ к PivotChart SeriesCollection с помощью Sub
Sub FormatChart(Cht As ChartObject, title As String)
Cht.Activate
MsgBox ActiveChart.SeriesCollection.Count
With ActiveChart
.HasTitle = True
.ChartTitle.Text = title
.Axes(xlValue).HasMajorGridlines = False
End With
ActiveChart.SeriesCollection(1).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 182, 0)
End With
End Sub
я первоначально не включал все Активизирует и выбирает, но не мог заставить макрос работать без них и не видят его как конец мира - наборы данных никогда не будут массовыми, поэтому скорость не так важна, и я отключу экранирование, чтобы пользователи не могли нажимать на ячейки/другие объекты и нарушать макрос при его запуске.
Вот моя проблема. Если я вынимаю второй цикл With, все происходит отлично, а сетки удаляются и заголовок добавляется. Тем не менее, всякий раз, когда я пытаюсь редактировать цвета столбцов с указанным выше, я получаю ошибку времени выполнения «1004»: недопустимый параметр. Я также попытался сохранить содержимое второго с циклом внутри первого, но затем переместил его, чтобы попробовать использовать выбор, чтобы узнать, не изменилось ли оно.
Я возился совсем немного и записали различные макросы, изменив цвет диаграммы в вопросе, но я думаю, что проблема может быть связана с ссылающегося SeriesCollection, как когда я пытаюсь отлаживать с
MsgBox ActiveChart.SeriesCollection.Count
Я получаю «0».
Пожалуйста, дайте мне знать, если я пропускаю пункт - как я сказал, что я новичок в VBA и пытаюсь узнать как можно больше :)
EDIT: Решение было то, что я проходил каждый график к вышеуказанной части после того, как я создал диаграмму, но до того, как я установил источник данных для диаграммы. Doh!
Это, очевидно, означало, что для этой диаграммы не было серийных номеров, следовательно, я получал ошибку.
Я пометил Joehannah как ответ на вопрос (хотя это не технически решение), потому что это заставило меня проверить мой код и заметить, что вышеупомянутое может вызвать проблему - если я не должен этого делать, меня, и я постараюсь это исправить!
Попробуйте этот '.Format.Line.ForeColor.RGB' [Также проверьте этот ответ.] (Http://stackoverflow.com/q/27027264/1389394) – bonCodigo
Привет, bonCodigo, к сожалению, все мои диаграммы - это гистограммы, а не линейных диаграмм.Ранее я рассматривал этот ответ и не хочу ссылаться на какую-либо именованную серию, поскольку я использую sub для ссылки на несколько диаграмм. Сказав, что я попытался ссылаться на именованную серию, чтобы увидеть, будет ли она работать, с «ActiveChart.SeriesCollection (« Всего »). Это все еще не сработало :( – FraserES
В приведенной выше ссылке есть точная информация, которую вы искали, поэтому она была дана. Ответ ниже имеет одинаковую информацию. Установив объект диаграммы в ссылочную переменную, это способ пойдите вокруг. Каждая диаграмма имеет также имя, не обязательно имя, данное вами, но 'chart1',' chart2'. Чтобы сохранить чистоту, почему бы вам не дать имя при создании объектов? – bonCodigo