Excel的Shapes.Range(数组(“someName”)) – 什么是定义的范围?

我在Excel VBA中有以下代码片段:

With Worksheets("MLS").Shapes.Range(Array("Rounded Rectangle 1")).Fill .ForeColor.RGB = RGB(166, 166, 166) .Transparency = 0.3 End With 

我不知道“圆angular矩形1”在哪里定义,以及它指的是什么形状或范围。 它没有在VBA代码中定义,我已经尝试search整个项目的名称。

我在哪里可以find“Rounded Rectangle 1”的定义,以及程序员有意使用此形状/范围/数组构造来引用范围/形状的内容?

Worksheets("MLS").Shapes.Range(Array("Rounded Rectangle 1"))引用工作表“MLS”上的一个名为“Rounded Rectangle 1”的形状,所以你不会find你正在寻找的定义你的代码,这是工作表上存在的一个对象。

Worksheets("SheetName").Shapes.Range([arg])用于引用指定工作表上存在的形状的子集(即该工作表的Shapes集合中的对象)。 Shapes.Range方法的参数可以是:

  • 一个Integer,指的是Shapes集合中的Shapes索引
  • string,指Shapes集合中形状的名称。
  • 包含string和/或整数的数组,引用Shapes集合中的Shapes的名称/索引。

在你的具体情况下, Array("Rounded Rectangle 1")是不必要的,并且所讨论的行可能被写为

 Worksheets("MLS").Shapes.Range("Rounded Rectangle 1") 

具有相同的效果,甚至只是

 Worksheets("MLS").Shapes("Rounded Rectangle 1") 

但是,如果你的工作表中有多个圆angular矩形,那么你需要使用你的神秘程序员使用的全部粗体参考,

 Worksheets("MLS").Shapes.Range(Array("Rounded Rectangle 1", "Rounded Rectangle 2", "Rounded Rectangle 3")) 

这将返回包含形状对象的集合Rounded Rectangle 1,2&3。

当您创build一个形状时,Excel将自动为您命名。 您可以通过select形状并在名称框中更改该名称来更改该名称。

在这里输入图像说明

在这里输入图像描述


正如@Rory所指出的,如果你的代码正在工作,那么这个形状就位于MLS工作表上。