我有一个Excel图表,根据切片器中做出的选择而改变。 我发现绘图区域和图例区域会根据所选内容而改变。
我尝试使用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
有了这段代码,我以为自动调整大小的问题会消失,但是我发现图例有时仍然会与绘图区域重叠。
有没有一种永久性解决这个问题的方法?
编辑1:
昨天,我仅为绘图区域添加了一些参数。当时似乎起作用了。但现在我再次尝试,发现图例又重叠到了绘图区域。
我将代码更改为:
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: 我已经在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: 我仍然没有解决这个问题。当一个图例项的名称太长而无法适应空间时,它已经发生了。当图例中有太多项目无法适应可用空间时,也会发生这种情况。
我认为这没有解决办法。除非我能告诉Excel最大化图例中的项目数量。或者最大化系列名称的长度。
ActiveChart.Legend.IncludeInLayout = True
,然后设置位置,如下所示:ActiveChart.Legend.Position = xlLegendPositionRight
。 - Automate This