Referstorange что делает vba excel

Обновлено: 07.07.2024

Can anyone tell me how to use RefersToRange in vba? and what and when is the need of it.

Please provide with simple example first.

Thanks in advance.

294 1 1 gold badge 4 4 silver badges 13 13 bronze badges

3 Answers 3

In Excel, there is the concept of a named range, that is a range of cells which has a name attached to it. This is represented by the Name object.

Returns the Range object referred to by a Name object.

For example, let's say I want to read the values only in the print area of the current worksheet. I need the Name object in order to access the print area, but I can't do anything useful with it; if I want to do something useful I have to access the range of cells referred to by that name:

11.2k 4 4 gold badges 51 51 silver badges 121 121 bronze badges i already checked msdn and its still unclear to me. That is why i posted here. Please provide your own example and explain what is happening. Thanks!

RefersToRange is, one of many ways, to 'point' a range. For example,

the above code, points to the range, which can be a cell, named "DownloadPictures" and sets it value to "yes". As a matter of fact, I'd rather use,

The 'Name' in MS Excel is similar to the Variant variable type, but unlike the variables you 'Dim' in the VB code, the 'Name' only be used (or you can consider it is only be used) in the Workbook. The 'Name' and variables are not interfered with each other.

If you open the 'Name Manager', the concept becomes easier to understand. The Name can be created to refer to a cell, a range of cell (a range), some value (so called constant), or a formula.

Each Name object represents a defined name for a range of cells. Names can be either built-in names—such as Database, Print_Area, and Auto_Open—or custom names. ---MSDN

As a Name can refer to range, constant or a formula .RefersToRange specifically refer to a range. And return false if not so.

Может ли кто-нибудь сказать мне, как использовать RefersToRange в vba? и что и когда это нужно.

Пожалуйста, сначала представьте простой пример.

3 ответа

В Excel существует концепция именованного диапазона , то есть диапазона ячеек, к которому привязано имя. Это представлено объектом Name.

Возвращает объект Range, на который ссылается объект Name.

Например, предположим, что я хочу прочитать значения только в области печати текущего рабочего листа. Мне нужен объект Name для доступа к области печати, но я не могу сделать с ним ничего полезного; если я хочу сделать что-то полезное, мне нужно получить доступ к диапазону ячеек, на который ссылается это имя:

Я обнаружил одну вещь: иногда обращение к именованному диапазону таким образом:

ThisWorkbook.Range ("DownloadPictures"). Value = "yes"

Ошибка времени выполнения «1004»: метод «Диапазон» объекта «_Worksheet» не выполнен

Но обращаясь к названному диапазону таким образом:

ThisWorkbook.Names ("DownloadPictures"). RefersToRange = "yes"

Работает отлично. Мое конкретное обстоятельство заключается в том, что именованный диапазон ("DownloadPictures") ограничен всей книгой, в которой есть несколько рабочих листов. Я имею в виду имя в одной из подпрограмм рабочего листа Worksheet_Calculate. Я не понимаю, почему первый метод вызывает ошибку, а второй нет, но, видимо, это одна из причин использовать свойство RefersToRange.

RefersToRange - это один из многих способов «указать» диапазон. Например,

Приведенный выше код указывает на диапазон, который может быть ячейкой с именем «DownloadPictures», и устанавливает для него значение «да». На самом деле, я бы предпочел использовать,

«Имя» в MS Excel похоже на тип переменной «Вариант», но в отличие от переменных, которые вы «затемняете» в коде VB, «Имя» используется только (или вы можете считать, что оно используется только) в Рабочей книге. «Имя» и переменные не мешают друг другу.

Если вы откроете «Диспетчер имен», концепция станет проще для понимания. Имя может быть создано для ссылки на ячейку, диапазон ячеек (диапазон), некоторое значение (так называемая константа) или формула.

Каждый объект Name представляет определенное имя для диапазона ячеек. Имена могут быть либо встроенными, например, Database, Print_Area и Auto_Open, либо пользовательскими именами. --- MSDN

Имя может относиться к диапазону, константе или формуле, .RefersToRange конкретно относится к диапазону. И верните false, если это не так.

Читайте также: