将图表对象放置在 Excel 中或将对象制作为一个系列

问题描述 投票:0回答:0

我的代码当前使用 ChartObjects 创建 2 个直方图。使用 ChartObject 依赖于您指定在电子表格中物理放置图表的位置(我不希望这样做,因为有 2 个图表,并且这 2 个图表可以在我的应用程序中重复多次)。

我试图将它们从 ChartObject 切换到 Objects,以便它们不重叠,但是当这样做时,系列的数据和轴范围(大小和位置都是动态的)将范围中的每个点解释为自己的系列。在大多数对象示例中,我看到范围是静态的并且直接相邻(例如 A1:B5),但我正在使用的数据并非如此。

如有任何帮助,我们将不胜感激,谢谢!查看快照,其中左侧是所需的图表外观。

请参阅下面的代码

Dim GammaSetChart As ChartObject
Dim GammaSetData As Range, GammaSetAxes As Range
Set GammaSetChart = ws3.ChartObjects.Add(Left:=180, Width:=300, Top:=7, Height:=200)
Set GammaSetData = ws3.Range(ws3.Cells(2 + emptyRow, num_sims + num_sims2 + 2), ws3.Cells(2 + emptyRow + num_source_bins, num_sims + num_sims2 + 2))
GammaSetChart.Chart.SetSourceData Source:=GammaSetData
Set GammaSetAxes = ws3.Range(ws3.Cells(2 + emptyRow, 1 + num_sims), ws3.Cells(num_source_bins + 1 + emptyRow, 1 + num_sims))
GammaSetChart.Chart.SeriesCollection(1).XValues = GammaSetAxes

Dim SimChart As Object
Dim SimData As Range, SimAxes As Range
'Set SimChart = ws3.ChartObjects.Add(Left:=180, Width:=300, Top:=7, Height:=200)
Set SimChart = ws3.Shapes.AddChart2
Set SimData = ws3.Range(ws3.Cells(4 + emptyRow + num_source_bins, num_sims + 3), ws3.Cells(4 + emptyRow + num_source_bins + num_sim_set_bins, num_sims + 3))
'Set SimData = ws3.Range(ws3.Cells(2 + emptyRow, num_sims + num_sims2 + 2), ws3.Cells(2 + emptyRow + num_source_bins, num_sims + num_sims2 + 2))
SimChart.Chart.SetSourceData Source:=SimData
Set SimAxes = ws3.Range(ws3.Cells(4 + emptyRow + num_source_bins, 1 + num_sims), ws3.Cells(3 + emptyRow + num_source_bins + y, 1 + num_sims))
'Set GammaSetAxes = ws3.Range(ws3.Cells(2 + emptyRow, 1 + num_sims), ws3.Cells(num_source_bins + 1 + emptyRow, 1 + num_sims))
SimChart.Chart.SeriesCollection(1).XValues = SimAxes
excel vba charts histogram
© www.soinside.com 2019 - 2024. All rights reserved.