Excel Shapes.Range(数组(" someName")) - 什么是定义的范围?

时间:2015-02-18 15:38:12

标签: excel vba excel-vba

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

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

我不知道“圆角矩形1”的定义位置以及它所指的形状或范围。它没有在VBA代码中定义,我已经尝试在整个项目中搜索名称。

在哪里可以找到“圆角矩形1”的定义,以及程序员可能使用此形状/范围/数组构造引用范围/形状的原因?

2 个答案:

答案 0 :(得分:2)

创建形状时,Excel会自动为您命名。您可以通过选择形状并在名称框中更改它来更改此名称。

enter image description here

enter image description here


正如@Rory指出的那样,如果你的代码正常工作,那么形状就位于MLS表格上。

答案 1 :(得分:2)

Worksheets("MLS").Shapes.Range(Array("Rounded Rectangle 1"))指的是一个名为"圆角矩形1"在工作表" MLS"因此,您无法在代码中找到您要查找的定义,它是工作表中存在的对象。

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

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

在您的具体情况下,Array("Rounded Rectangle 1")的使用是不必要的,有问题的行可以写成

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

效果相同,甚至只是

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

然而,如果您的工作表上有多个圆角矩形,那么您将需要使用您的神秘程序员使用的完整脂肪参考,

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

将返回包含形状对象的集合圆角矩形1,2和2; 3。