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社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

(0)

相关推荐

  • 【VBA】excel中 #N/A = Error 2042

    最新文章 VBA]excel中 #N/A = Error 2042 2019-10-27 VBA 2 条评论 1749 次阅读 excel中的常见的单元格错误"#N/A",在VBA ...

  • 怎样给单元格的网址批量添加超链接

    单元格网址部分截图如图1,每个单元格必须双击才能变成超链接模式,怎样给这些地址批量添加超链接呢? 图1 也许有人说可以用VBA解决啊,可是VBA对于大多数人来说还是太高深了.其实一个函数就可以解决,非 ...

  • 关于VBA中Evaluate的用法

    Evaluate用法:将字符串转换为值或对象. 举例说明: 一.将字符串公式转换为一个值 在VBA中,双引号之间为字符串.(字符串在单元格中靠左显示,数值则靠右显示) 下图中给A1单元格赋值为1+2+ ...

  • vba保护单元格

    一张表中,只保护除A10:K10之外单元格,除这几个单元格外,别的不允许输入数据,不允许插入删除行列.但可以在VBA里面写数据.请问这种怎么实现,protect貌似只能保护整张表,而不能保护特定的几个 ...

  • VBA小技巧09:从非连续的单元格区域将值复制到指定单元格区域

    excelperfect 本文将给出一段VBA代码,从非连续的单元格区域复制值并粘贴到另外指定的单元格区域. 如下图1所示,将右侧两个单元格区域的数据复制到左侧的两个单元格区域中. 图1 下图2是粘贴 ...

  • VBA小技巧10:删除工作表中的错误值

    excelperfect 这里将编写VBA代码,用来删除工作表指定区域中的错误值,这在很多情况下都很有用. 如下图1所示,有一组数据,但其中有一些错误值,我们想要自动删除这些错误值. 图1 删除错误值 ...

  • VBA小技巧11:创建动态有效性列表

    excelperfect 在有些情况下,当工作簿发生变化时,有效性列表中的项目随之更新是很有用的.例如,如下图1所示,在"目录"工作表中,使用数据有效性列出了工作簿中所有工作表的名 ...

  • VBA小技巧12:查找正确的格式

    excelperfect 如果我们需要查找特定格式的单元格,例如字体为加粗或者有特定背景色的单元格,该怎么操作? 此时,就要用上Find方法的参数SearchFormat了.这是一个布尔参数,它告诉F ...

  • VBA小技巧13:匹配大小写查找

    excelperfect 有时候,我们需要执行区分大小写的查找,如下图1所示. 图1 我们要查找单词"Excel",如果使用下面的程序代码: Sub MatchCaseFind() ...

  • VBA小技巧14:拆分带有换行的单元格中的文本

    excelperfect 在Excel中,我们可以使用"分列"功能(即"文本到列"),很容易地将单元格中带有特定分隔符的文本拆分到不同的列中.但是,对于使用&l ...

  • VBA实战技巧15:创建索引页

    excelperfect 在工作簿中有许多工作表时,我们可以创建一个单独的工作表当作索引页,在其中创建到每个工作表的链接,就像目录一样,不仅方便查看工作簿中的工作表名称,而且单击时可以直接到达指定的工 ...

  • 15分钟了解素描测量画面的小技巧

    15分钟了解素描测量画面的小技巧

  • 家庭发豆芽小技巧,一个盒子一把土,7天长到15公分高,值得收藏

    家庭发豆芽小技巧,一个盒子一把土,7天长到15公分高,值得收藏