Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Вся правда о Range Добавлено: 18.11.08 01:24  

Автор вопроса:  Nytrogen
Открыв раздел справки VBA, посвящённый свойству Range, читаем следующую фразу:
When used without an object qualifier, this property is a shortcut for ActiveSheet.Range


Что же, проверим это на деле:
Sub TestRanges()
  Dim theRange As Range
  Set theRange = ThisWorkbook.Worksheets("Sheet1").Range("B2:B6")
  'работает всегда:
  Debug.Print Range(theRange.Range("A1"), theRange.Range("A3")).Address
  'работает, только если активен рабочий лист, содержащий theRange:
  Debug.Print ActiveSheet.Range(theRange.Range("A1"), theRange.Range("A3")).Address
End Sub

Оказывается, что свойство Range "умнее", чем кажется на первый взгляд. Ссылка на ActiveSheet.Range происходит только в том случае, если угловые ячейки диапазона (то бишь Cell1 и Cell2) принадлежат объекту ActiveSheet, иначе Range возвращает ссылку на диапазон соответственного рабочего листа, не генерируя ошибки. Таким образом, Range без указания объекта умеет анализировать передаваемые параметры и ссылаться на активный лист только при необходимости.

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #1
Добавлено: 18.11.08 11:51
А в чем вопрос?

Ответить

Номер ответа: 2
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #2 Добавлено: 18.11.08 12:47
Вопроса нет, просто хотел поделиться своей находкой. Имхо, это весьма интересно =)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам