我正在尝试将ChartSpace图表的X和Y轴边界设置为我的数据宽度。但是,以下代码不起作用;
With ChartControl
.DataSource = SpdShtCtrl
With .Charts.Add
.Type = chChartTypeScatterLine
With .Axes(chCategoryAxis)
.Left = WorksheetFunction.Min(SpdShtCtrl.Range("XValues"))
.Right = WorksheetFunction.Max(SpdShtCtrl.Range("XValues"))
End With
With .Axes(chValueAxis)
.Bottom = WorksheetFunction.Min(SpdShtCtrl.Range("YValues"))
.Top = WorksheetFunction.Max(SpdShtCtrl.Range("YValues"))
End With
'...
End With
End With
.Right
方法失败,错误“参数数量错误或属性分配无效”。我理解,因为在检查时,.Right
和.Bottom
属性是只读的,而.Left
和.Top
属性是读/写的。但是,我不明白为什么会这样。
评论.Right
和.Bottom
调用编译正常,但是在调用.Left
方法时出现运行时错误,该方法显示“这是一个不适当的时间来更改布局。” / p>
为ChartSpace图表设置X和Y轴边界的正确方法是什么?我似乎无法在任何地方找到相关信息。
答案 0 :(得分:0)
事实证明我正在咆哮错误的树。设置.Left
属性会移动屏幕上的轴,而不会更改绘制的最小数据值!如果有人想知道,我已经包含了.Left
属性的正确用法。
我通过Left property help和AfterLayout event help的组合找到了答案。它涉及在ChartSpace
.AllowLayoutEvents = True
在AfterLayout
;
ChartSpace
事件创建事件处理程序
Private Sub ChartControl_AfterLayout(ByVal drawObject As OWC11.ChChartDraw)
ChartControl.Charts(0).Axes(chCategoryAxis).Left = _
WorksheetFunction.Min(SpdShtCtrl.Range("XValues"))
End Sub
我真正想做的是在系列中设置.Scalings
属性,即
With ChartControl.SeriesCollection(0)
.Scalings(chDimXValues).Minimum = bla
.Scalings(chDimXValues).Maximum = bla
.Scalings(chDimYValues).Minimum = bla
.Scalings(chDimYValues).Maximum = bla
End With