暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VBA实战技巧24:调整图表数据标签的位置

完美Excel 2021-05-30
2558

学习Excel技术,关注微信公众号:

excelperfect


有时候,在Excel中绘制的图表会出现数据标签重叠的情形,不便于查看,如下图1所示。

1

 

此时,可以手工拖动数据标签来进行位置调整,也可以使用VBA代码来自动调整。

 

首先,了解一下图表坐标体系。如下图2所示,展示了将数据标签移到图表区域的右下角时的情形。图表坐标的原点(0,0)在图表区域的左上角。

2

 

使用VBA时,

Wd=ChartArea.Width

Ht=ChartArea.Height

 

数据标签(DataLabel对象)的Top属性和Left属性可以取得其左上角的xy值。那么,可以计算出数据标签的高度和宽度为:

h = Ht – y

w = Wd - x

 

这样,编写的VBA代码如下:

Sub FindLblSize()

    Dim Lbl As DataLabel

    Dim Cht As Object

    Dim chartWd, chartHt

    Dim OldTop, OldLeft

    Dim LblWd, LblHt

   

    Set Cht =ActiveChart

    Set Lbl =Cht.SeriesCollection(1).Points(3).DataLabel

   

   '获取图表区的高度和宽度

    chartWd =Cht.ChartArea.Width

    chartHt =Cht.ChartArea.Height

   

   '存储数据标签原位置

    OldTop =Lbl.Top

    OldLeft =Lbl.Left

   

   '试图移动数据标签

   '左上角与图表区域右下角重合

    Lbl.Top =chartHt

    Lbl.Left= chartWd

   

   '计算标签尺寸

    LblWd =chartWd - Lbl.Left

    LblHt =chartHt - Lbl.Top

    MsgBox"标签大小: 宽度 = " &LblWd & "    高度 = " &LblHt

   

   '移动重叠标签使之错开

    Lbl.Left= OldLeft

    Lbl.Top =Cht.SeriesCollection(1).Points(2).DataLabel.Top - LblHt

End Sub

 

在工作表中选择图表,运行FindLblSize过程,结果如下图3所示。

3

 

小结:由于可以手动拖动数据标签来调整其位置,上述代码看似用处不大,但是其演示的技术可以帮助我们了解图表布局和相关对象属性,并且在以编程方式检查一系列重叠的数据标签并需要处理时,上述代码是一个基础。

 

注:本文学习整理自mrexcel.com,供有兴趣的朋友学习参考。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

文章转载自完美Excel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论