Ошибка автоматизации в графическом цикле Excel VBA - PullRequest
0 голосов
/ 31 декабря 2018

Я новичок в VBA, и у меня есть лист «Все нормализовано», из которого я беру значения диаграммы.X-значения берутся из столбца A, а соответствующие Y-значения берутся из последовательных столбцов.Они идут только от строки 3 к строке 37. Приведенный ниже код предназначен для построения диаграммы для неограниченного числа коллекций серий с использованием цикла.

До того, как код работал для одной серии коллекций, но когда я переписал код для цикла для нескольких, он перестал работать.Это дает мне ошибку, которая просто говорит: «Ошибка времени выполнения -2147467259 (80004005)»:

Ошибка автоматизации «Я посмотрел на ошибку, и эта ссылка говорит мне, чтобы снять защиту листа, что я сделал снормализованный лист и диаграмма листа, но ни один не работал.Что я делаю не так?

Private Sub Plot()

Dim DVHChart As Chart
Dim ChartIndex1 As Integer
Dim ChartName As String

Set DVHChart = Charts.Add
Application.ScreenUpdating = False

'DVH (Static) Plot

With DVHChart
    .ChartType = xlXYScatterLines
    .ChartArea.Fill.Visible = True
    .ChartArea.Interior.Color = RGB(0, 0, 0)
    .PlotArea.Interior.Color = 0
    .HasLegend = True
    .Legend.Font.ColorIndex = 2
    .HasTitle = True
    .ChartTitle.Text = "Electric Field Volume Histogram (EVH)"
    .ChartTitle.Font.Color = RGB(255, 255, 255)

Do Until .SeriesCollection.count = 0
        .SeriesCollection(1).Delete
    Loop

End With

'Set Y-Axis
With DVHChart.Axes(xlValue)
    .MinimumScale = 0
    .MaximumScale = 1
    .MajorUnit = 0.1
    .HasTitle = True
    .AxisTitle.Caption = "Normalized Volume (%)"
    .AxisTitle.Font.Size = 20
    .AxisTitle.Font.Color = vbWhite
    .TickLabels.Font.Color = vbWhite
    .TickLabels.NumberFormat = "0.00"
    .HasMajorGridlines = True
End With

'Set X Axis
With DVHChart.Axes(xlCategory)
    .TickLabelPosition = xlTickLabelPositionLow
    .TickLabels.Orientation = 0
    .TickLabels.Font.Color = vbWhite
    .HasTitle = True
    .AxisTitle.Caption = "Electric Field (V/m)"
    .AxisTitle.Font.Size = 14
    .AxisTitle.Font.Color = vbWhite
    .MinimumScale = 0
    .MaximumScale = 300
    .MajorUnit = 25
    .HasMajorGridlines = True
End With



'Started changes here

Worksheets("All Normalized").Unprotect
Sheets("DVHChart").Unprotect

Dim num As Integer
Dim loc As String
For num = 2 To 5
DVHChart.SeriesCollection.NewSeries
DVHChart.SeriesCollection(num).Name = Worksheets("All Normalized").Range("A2").Value
DVHChart.SeriesCollection(num).Values = Worksheets("All Normalized").Range(Cells(3, num), Cells(37, num)) 'Automation error here
DVHChart.SeriesCollection(num).XValues = Worksheets("All Normalized").Range("A3:A37")
DVHChart.SeriesCollection(num).Format.Line.DashStyle = msoLineSolid
DVHChart.SeriesCollection(num).MarkerStyle = xlMarkerStyleNone
DVHChart.SeriesCollection(num).Smooth = True
DVHChart.SeriesCollection(num).Format.Line.Visible = msoFalse
DVHChart.SeriesCollection(num).Format.Line.Visible = msoTrue
DVHChart.SeriesCollection(num).Format.Line.ForeColor.RGB = RGB(255, 0, 225)
Next num
'Ended changes here

Dim imageName1 As String
imageName1 = Application.DefaultFilePath & Application.PathSeparator & "DVH.bmp"
With DVHChart.Parent
    .Width = 800
    .Height = 600
    .Top = Range("A1").Top
    .Left = Range("A1").Left
End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...