前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA小技巧15:引用形状

VBA小技巧15:引用形状

作者头像
fanjy
发布2021-09-22 10:20:55
7200
发布2021-09-22 10:20:55
举报
文章被收录于专栏:完美Excel完美Excel

这是一位朋友碰到的应用场景:我们必须创建很多形状来显示每个形状所覆盖的单元格中的文本值,有时这些单元格和/或形状会移动。如果手动检查每个形状并将其重新链接到其各自的单元格引用,非常耗时。此时,VBA可以来帮助我们。

工作表示例如下图1所示。

图1

接着,我们创建一些形状(这里是文本框)并将它们放置在包含文本的单元格之上,如下图2所示。

图2

按Alt+F11打开VBE,插入一个标准模块,输入下面的代码:

Sub ShapeReference()

Dim sh As Shape

Dim varShFormula As Variant

For Each sh In ActiveSheet.Shapes

Set varShFormula = ActiveSheet.Shapes.Range(Array(sh.Name))

varShFormula.Select

Selection.Formula = "=" & sh.TopLeftCell.Address

Next sh

End Sub

代码遍历工作表中的形状,将变量varShFormula定义为正在处理的形状对象公式,然后选择该变量对象,并将位于形状左上角的单元格引用值赋给该形状公式。

注意,如果将

varShFormula.Select

Selection.Formula = "=" &sh.TopLeftCell.Address

合并成:

varShFormula.Formula = "=" &sh.TopLeftCell.Address

将返回错误。

运行ShapeReference过程,形状上显示其覆盖的单元格中的文本值,如下图3所示。

图3

我们将形状重新放置到新的位置,如下图4所示。

图4

重新运行ShapeReference过程,更新形状中的内容,结果如下图5所示。

图5

注:本技巧学习整理自www.sumproduct.com,供有兴趣的朋友参考。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档