我有一个Excel图表,它在切片器中进行选择时发生变化。 我注意到绘图区和图例区根据制作的选择而改变。vba图例和绘图区域调整大小
我试图使用vba修复绘图区域的位置和大小,但这不起作用。
绘图区和图例继续调整大小,导致图例与绘图区重叠。我显然不想要。
我有这样的代码,放置在VBA编辑器的工作表页:
Option Explicit
Private Sub Chart_Calculate()
ChartObjects("grafiek 4").Activate
ActiveChart.PlotArea.Width = 637.783
ActiveChart.Legend.Left = 716.514
ActiveChart.Legend.Width = 176.735
ActiveChart.Legend.Height = 295.334
End Sub
有这个代码,我承担了自动调整大小也就不复存在了,但我看到了传说中有时仍然重叠德积区。
有没有永久解决这个问题的解决方案?
EDIT1:
昨天,我只是添加绘图区的几个参数。这似乎工作。但现在我又试了一次,这个传说再次与剧情区重叠。
我改变了代码:
Option Explicit
Private Sub Chart_Calculate()
ChartObjects("grafiek 4").Activate
ActiveChart.PlotArea.Top = 33.102
ActiveChart.PlotArea.Left = 67.1
ActiveChart.PlotArea.Width = 637.783
ActiveChart.Legend.Top = 7
ActiveChart.Legend.Left = 716.514
ActiveChart.Legend.Width = 176.735
ActiveChart.Legend.Height = 329.667
End Sub
因此,与2个绘图区更paramters。
编辑2: 我检查了Excel中的图例属性。在“选择图例”下有一个复选框:显示没有重叠绘图区域的图例(我不知道确切的英文文本)。 选中此框,但它确实与绘图区重叠。
为什么不可能实现这个目标?对于地块面积和传说的固定尺寸应该不那么难。
编辑3: 我现在有这个程序在我的工作簿:
Option Explicit
Private Sub Chart_Calculate()
ChartObjects("grafiek 4").Activate
With ActiveChart
With .PlotArea
.Top = 33.102
.Left = 67.1
.Width = 637.783
End With
With .Legend
.IncludeInLayout = True
.Position = xlLegendPositionRight
.AutoScaleFont = False
.Font.Size = 8
.Top = 5
.Left = 706.899
.Width = 179.735
.Height = 336.681
End With
End With
End Sub
Sub kopieergrafiek()
ActiveSheet.ChartObjects("Grafiek 4").Copy
End Sub
(包括在下面我的帖子的评论的建议)
我似乎并没有工作。 worksheet_change事件可能更好吗?
编辑4: 我还没有解决这个问题。它已经发生时,图例项目的名称是1,以适应空间。当图例中有很多项目适合可用空间时,也会发生这种情况。
我认为这没有解决办法。除非我能以某种方式告诉excel最大化图例中的项目数量。或最大化系列名称的长度。
可能不完全是你想要的,但你可以像下面这样将图例与绘图区分开:'ActiveChart.Legend.IncludeInLayout = True'然后像这样设置位置:'ActiveChart.Legend.Position = xlLegendPositionRight' – 2014-10-28 15:03:13