【发布时间】:2019-07-26 16:37:42
【问题描述】:
我正在用 excel 制作图表,并希望将源数据范围设置为命名范围。这是工作表上的第二个图表(因此是 ChartObjects(2))。
Sub PieChartCreation()
Dim shArray() As Variant
Dim cht As ChartObject, CurrentSheetName As String, ChartCount As Integer, CurrentSheet As Worksheet, riskrange As Range, datarange As Range, multirange As Range
Dim NYears As Integer
shArray = Array("TotalCholesterol", "HDL", "LDL", "TRIG", "SBP", "DBP", "BP", "Glucose", "A1C", "BMI", "Waist", "WHR", "PSA")
i = 0
NYears = Worksheets("Copy").Range("CT2").Value
For i = LBound(shArray, 1) To UBound(shArray, 1)
Worksheets(shArray(i)).Activate
Set CurrentSheet = Worksheets(shArray(i))
CurrentSheetName = shArray(i)
ChartCount = ActiveSheet.ChartObjects.Count
Set riskrange = Range(CurrentSheet.Cells(1, NYears * 2 + 3), CurrentSheet.Cells(4, NYears * 2 + 3))
Set datarange = Range(CurrentSheet.Cells(1, NYears * 3 + 3), CurrentSheet.Cells(4, NYears * 3 + 3))
Set multirange = Union(riskrange, datarange)
Set co = Sheets(shArray(i)).ChartObjects.Add(1, 1, 1, 1)
ActiveSheet.ChartObjects(2).Activate
co.Chart.SetSourceData Source:=Range("multirange")
co.Chart.ChartType = xlPie
co.Chart.HasTitle = True
ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = CurrentSheetName
Set cht = co.Chart.Parent
With cht
.Left = CurrentSheet.Cells(7, NYears * 2 + 11).Left
.Top = CurrentSheet.Cells(7, NYears * 2 + 11).Top
.Height = CurrentSheet.Range(Cells(7, NYears * 2 + 11), Cells(23, NYears * 4 + 11)).Height
.Width = CurrentSheet.Range(Cells(7, NYears * 2 + 11), Cells(23, NYears * 4 + 11)).Width
End With
Next i
End Sub
我在 co.Chart.SetSourceData Source:=Range("multirange") 上收到以下错误
运行时错误 1004:对象“_Global”的方法范围失败
我假设我只是没有正确的命名约定。我应该如何使用命名范围设置此源数据?
【问题讨论】: