ПРИМЕЧАНИЕ: приведенный ниже код действительно работает! Смотрите мой собственный ответ о причине проблемы, которую я имел. Я решил оставить здесь код, поскольку видел другие вопросы, касающиеся удаления второй горизонтальной оси.
НАЧАЛЬНЫЙ ВОПРОС / ПРОБЛЕМА: я формирую серию электронных таблиц, на которых есть несколько диаграмм. При применении выбранного стиля диаграммы (я использую стиль 209 - со строкой кода "ActiveChart.ChartStyle = 209), некоторые диаграммы возвращаются с двумя горизонтальными осями, что мне не нужно (некоторые диаграммы имеют две вертикальные оси - но это нормально). Вместо того, чтобы переходить от графика к диаграмме и вручную удалять каждую вторичную горизонтальную ось, я включил фрагмент кода в свою подпрограмму форматирования. Код работает большую часть времени. Но иногда я получаю ошибку ниже:
Изображение ошибки VB
У меня сложилось впечатление, что "On Error GoTo" "игнорируется". То есть вышеприведенная ошибка возникает, когда я попадаю на строку «ActiveChart.SetElement ...», поскольку у диаграммы нет вторичной оси. Это означает, что строка, в которой я запросил максимальный масштаб вторичной оси (то есть "chart_axis = ..."), должна вернуть ошибку (поскольку вторичная ось не существует). Это означает, что «On Error GoTo» был проигнорирован (или не перешел на «No_second_axis»).
Вот часть кода, которую я использую, которая удаляет вторую ось (если она существует):
Dim s_name As String
Dim chart_axis As Variant
For Each Shape In ActiveSheet.Shapes
s_name = Shape.Name
If Shape.Type = msoChart Then
ActiveSheet.ChartObjects(s_name).Activate
On Error GoTo No_second_axis
'Try to get the "scale" of secondary horizontal axis - error if non-existent
chart_axis = ActiveChart.Axes(xlValue, xlSecondary).MaximumScale
'If it reached this line, there was no error when getting the second horizontal axis scale (i.e., the second horizontal axis exists. No I can delete it!
With ActiveChart
ActiveChart.SetElement (msoElementSecondaryCategoryAxisNone)
End With
No_second_axis:
End If
Next Shape
End Sub
Я что-то упустил? Почему «On Error Go To» иногда работает, но не работает для некоторых графиков? Я не могу найти «шаблон» с точки зрения типа диаграммы, с которой он работает, и типа диаграммы, с которой он не работает.