Я новичок в VBA и хочу определить серии для диаграммы. Вот код
For i = 2 To lsrw (last row in my code)
'Define the series for the chart in case of empty series
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(sc).Name = sh.Range("J" & i).Value
ActiveChart.SeriesCollection(sc).XValues = _
Array(sh.Range("A" & i), sh.Range("A" & i))
ActiveChart.SeriesCollection(sc).Values = _
Array(sh.Range("K" & i), sh.Range("L" & i))
sc=sc+1
Next
Диаграмма, которую я хочу иметь, является точечной. Линии должны строить вертикальные линии. Он работает с «При ошибке продолжить далее», но я не могу добавить новые серии после этого. Кажется, что код не останавливается, когда больше нет серий для создания. Я не понимаю, что не работает.
Дело в том, что размер моего набора данных время от времени меняется, когда я делаю запрос SQL перед его построением.
https://i.stack.imgur.com/vvqHV.png
РЕДАКТИРОВАТЬ: проблема решена, но теперь она появляется в другом месте (ошибка 1004):
'For j = 3 To 20
'
' If sh.Cells(lstrow, j).Value <> 0 Then
' ActiveChart.SeriesCollection.NewSeries
' ActiveChart.SeriesCollection(sc).Name = sh.Cells(lstrow - 1, j).Value
'
' ActiveChart.SeriesCollection(sc).XValues = _
' Array(sh.Range("A2"), sh.Range("A" & lsrw))
'
' ActiveChart.SeriesCollection(sc).Values = _
' Array(sh.Cells(lstrow, j).Value, sh.Cells(lstrow, j).Value)
' End If
'
' sc = sc + 1
' ActiveChart.SeriesCollection(sf).AxisGroup = xlPrimary
'
'Next
Когда я хочу построить горизонтальный линии на том же графике.
Также здесь, когда я хочу изменить внешний вид графика:
For Each chrt In sh.ChartObjects
chrt.chart.ChartArea.Font.Size = 9
chrt.chart.ChartArea.Font.Name = "Cambria"
chrt.chart.ChartArea.Border.LineStyle = xlNone
chrt.chart.Axes(xlValue).MinimumScale = 0
chrt.chart.Axes(xlValue).MaximumScale = yMax + 50
chrt.chart.Axes(xlCategory).MinimumScale = xMin - 1
chrt.chart.Axes(xlCategory).MaximumScale = xMax + 1
chrt.chart.HasAxis(xlCategory) = False
chrt.chart.Axes(xlCategory).Width = 400
chrt.chart.Axes(xlValue).HasTitle = True
chrt.chart.Axes(xlValue).AxisTitle.Text = "Depth in m"
Next chrt