2015-02-18 3 views
1

У меня есть следующий фрагмент кода в Excel VBA:Excel Shapes.Range (Array ("someName")) - какой заданный диапазон?

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

Я не знаю, где «Rounded Rectangle 1» определяется и в какой форме или диапазон он относится. Он не определен в коде VBA, я уже пробовал искать весь проект для имени.

Где я могу найти определение «Rounded Rectangle 1» и что могли быть программисты, намеренные ссылаться на диапазон/форму, используя эту конструкцию shape/range/array?

+1

Это имя формы на листе MLS. Я предполагаю, что это округленный прямоугольник;) – Rory

ответ

2

Worksheets("MLS").Shapes.Range(Array("Rounded Rectangle 1")) относится к форме с названием «Rounded Rectangle 1» на листе «MLS», поэтому вы не найдете определения, которое вы ищете в своем коде, это объект, который существует на листе.

Worksheets("SheetName").Shapes.Range([arg]) используется для ссылки на подмножество фигур, представленных на названном листе (т. Е. Объекты в коллекции Shapes этого листа). Аргумент метода Shapes.Range может быть либо:

  • Целое число, со ссылкой на индекс формы в Shapes коллекции
  • строку, ссылаясь на имя формы в Shapes коллекции.
  • Array, содержащий строки и/или целые числа, ссылаясь на имена/индексы фигур в коллекции Shapes.

В вашем конкретном случае использование Array("Rounded Rectangle 1") ненужно и линия в вопросе могла бы быть написана как

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

с тем же эффектом, или даже просто

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

Однако если на вашем листе было несколько Rounded Rectangles, тогда вам нужно будет использовать полную ссылку на жир, которую использовал ваш программист тайны, что-то вроде строк

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

Что бы вернуть коллекцию, содержащую форму объектов с закругленными углами 1, 2 & 3.

2

Когда вы создадите форму, Excel автоматически назовет ее для вас. Вы можете изменить это имя, выбрав форму и изменив ее в поле имени.

enter image description here

enter image description here


Как @Rory отметил, если ваш код работает, то форма расположена на листе MLS.

+0

Спасибо, это очевидно. Оказывается, эта часть кода не используется и что цвета устанавливаются непосредственно в качестве фоновых цветов в ячейках листа. Вот почему я был в замешательстве. – derMax

Смежные вопросы