Макрос завершается с ошибкой при запуске, но работает при пошаговом выполнении

#excel #vba #charts

#excel #vba #Диаграммы

Вопрос:

Я работаю с 2-осевой диаграммой, показывающей объем со столбцами и изменение за год без визуального представления, только метки данных. Я написал макрос для равномерного перемещения меток данных за год над каждым столбцом. Макрос отлично работает при пошаговом выполнении, но завершается сбоем при запуске.

 Sub Move_Data_Point_1_chart()
    Set chrt_obj_sig = ActiveSheet.ChartObjects("Volume amp; YoY")
    Set chrt_sig = chrt_obj_sig.Chart
    pnt_cnt = chrt_sig.SeriesCollection(1).Points.Count
    
    chrt_sig.FullSeriesCollection(1).DataLabels.Position = xlLabelPositionInsideEnd
            
    For i = 1 To pnt_cnt
        chrt_sig_pt = chrt_sig.SeriesCollection(1).Points(i).DataLabel.Top
        chrt_sig.SeriesCollection(2).Points(i).DataLabel.Top = chrt_sig_pt - 18
    Next i
    
    chrt_sig.FullSeriesCollection(1).DataLabels.Position = xlLabelPositionCenter
End Sub
  

Вот мой ожидаемый результат.
Правильный вывод

Вот неудачный вывод. Неверный вывод

Есть предложения по исправлению этого?

Я искал и нашел много похожих случаев, но ничего, что я мог бы применить к моей конкретной ситуации.

Заранее спасибо.

Комментарии:

1. сбой при запуске : к сожалению, это ничего не говорит нам о вашей проблеме. Выдает ли он ошибку? если да, то что это? Если нет, то что он делает, чего он не предполагает? Кроме того, попробуйте уточнить свой лист, а не ActiveSheet . Это чревато опасностью

2. Извините, следовало бы лучше объяснить «сбой». При запуске макроса он неправильно перемещает метки дополнительных данных. В моем исходном сообщении есть 2 картинки, показывающие, каким должен быть мой ожидаемый результат и что я получаю при запуске макроса. Не уверен, почему он будет работать пошагово, но не при его запуске.

3. Есть причины не использовать xlLabelPositionOutsideEnd ?

4. Я пытаюсь показать объем с каждым столбцом, эта метка данных должна быть центрирована в каждом столбце. Дополнительно отображается изменение за год с перекрывающимся столбцом без цвета. Цель состоит в том, чтобы показать изменение за год над столбцом объема. Значение YoY редко совпадает с объемом, что требует корректировки его положения.