Ошибка времени выполнения '13' код VBA, выделяющий последнюю точку данных - PullRequest
0 голосов
/ 10 февраля 2020

Я нашел этот макрос и попытался настроить его для работы на каждом графике. Предполагается выделить конечную точку данных для каждого графика и выделить только серию 1. Я получаю ошибку:

Ошибка времени выполнения '13': Несоответствие типов

на линии Set cht = ws.ChartObjects

    Sub LastPointLabel()
      Dim srs As Series
      Dim iPts As Long
      Dim cht As Chart
      Dim ws As Worksheet
      Dim bLabeled As Boolean
      Set ws = ActiveSheet

      Set cht = ws.ChartObjects
    Set srs = cht.SeriesCollection(1)
  For Each cht In sht.ChartObjects
          bLabeled = False
          With srs
            For iPts = .Points.Count To 1 Step -1
              If bLabeled Then
                ' handle error if point isn't plotted
                On Error Resume Next
                ' remove existing label if it's not the last point
                srs.Points(iPts).HasDataLabel = False
                On Error GoTo 0
              Else
                ' handle error if point isn't plotted
                On Error Resume Next
                ' add label
                srs.Points(iPts).ApplyDataLabels _
                    ShowSeriesName:=True, _
                    ShowCategoryName:=False, ShowValue:=False, _
                    AutoText:=True, LegendKey:=False
                bLabeled = (Err.Number = 0)
                On Error GoTo 0
              End If
            Next
          End With
        Next

    End Sub

1 Ответ

1 голос
/ 10 февраля 2020

Пришлось отрегулировать:

Dim cht as Chart

до

Dim cht as ChartObject

и отрегулировано и перемещено

Set srs = cht.SeriesCollection(1)

до

Set srs = cht.Chart.SeriesCollection(1)

ниже l oop start

также удалено линия Set cht = ws.ChartObjects из кода

Благодаря @ JeremyKahan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...