VBA小技巧15:引用形状
excelperfect
这是一位朋友碰到的应用场景:我们必须创建很多形状来显示每个形状所覆盖的单元格中的文本值,有时这些单元格和/或形状会移动。如果手动检查每个形状并将其重新链接到其各自的单元格引用,非常耗时。此时,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,供有兴趣的朋友参考。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。