Объект SpreadSheet.Range
Объект Range является основой основ в объектной модели Excel. Также обстоит дело и в модели компонента SpreadSheet. Десятки свойств и методов различных объектов этой модели возвращают в качестве результата объект Range. Заметьте, коллекции Cells, Rows, Columns, возвращаемые одноименными свойствами, являются одновременно объектами Range. Такие свойства как Range, Selection, ViewableRange, VisibleRange, такие методы как Union, Intersection и многие другие - возвращают объект Range.
Модель этого объекта хорошо отработана еще в Excel и потому не удивительно, что объект SpreadSheet.Range унаследовал большую часть свойств объекта Excel.Range. Конечно, часть свойств исходного объекта была потеряна - исчезла возможность работы с формулами над массивами, возможность хранения зависимостей, работы с циклическими ссылками, но основные свойства объекта Excel.Range сохранились. Заметьте, у объекта SpreadSheet.Range почти не появилось новых свойств, которых не было бы у объекта Excel.Range. Достаточно сказать, что из 46 свойств объекта SpreadSheet.Range 45 свойств перешли по наследству от объекта Excel.Range. Появилось лишь одно новое свойство - HTMLData, о котором уже шла речь при рассмотрении объекта SpreadSheet. Для объекта Range это свойство имеет статус "только для чтения" и позволяет вернуть HTML-таблицу, хранящуюся в ячейках области, заданной объектом Range.
Поскольку объект Excel.Range описан мной достаточно подробно, то я не буду останавливаться на деталях описания аналогичных свойств объекта SpreadSheet.Range , и даже не буду всех их перечислять. Скажу только, что свойства объекта позволяют работать с коллекциями ячеек, строк и столбцов области, отдельными ячейками, границами области, используемым шрифтом, формулами и значениями, хранимыми в ячейках, их форматами и многим другим.
Приведу пример программной работы с объектами Range. Заметьте, эти объекты уже появлялись в ранее приведенной процедуре - обработчике события OnLoad объекта Window. Но еще один пример не помешает. К Web-странице, показанной на рис. 10.4, я добавил командную кнопку. Вот описание соответствующего тега:
<p><input type="button" value="Работа с объектом Range" name="myButton" OnClick = WorkWithRange></p>
Далее я написал обработчик события Click для этой кнопки, в котором создаю и работаю с объектами Range нашей электронной таблицы, размещенной на этой странице. Вот VBScript код этого обработчика:
Sub WorkWithRange()
'Работа с областями электронной таблицы Dim myc 'Задание набора констант Dim myr, myr1, myr2, myr3, myr4, myr5, myr6 'объекты Range Dim strFormula 'Строка, задающая формулу
With BooKFour_1787_WebCalc Set myc = .Constants Set myr2 = .Range("E12:G14") myr2.Borders.Weight = myc.owcLineWeightMedium myr2.Borders.Color = "Blue" 'Изменяю область, доступную для просмотра .ViewableRange = "A1:G20" 'Создаю объекты Range для программной работы с ними Set myr = .Range("A11:G20") With myr .Font.Size = 12 .Font.Bold = True Set myr1 = .Cells(2,5) myr1.Value = "Строки и столбцы" Set myr3 = myr1.Offset(1) myr3.Value = myr.Rows.Count Set myr4 =myr1.Offset(1,1) myr4.Value = myr.Columns.Count Set myr5 = myr1.Offset(2) strFormula = "=" & myr3.Address & "+" & myr4.Address myr5.Formula = strFormula Set myr6 = myr1.Offset(2,2) strFormula = "=" & myr3.Address & "*" & myr4.Address myr6.Formula = "=E13 * F13" 'Замораживание подокна myr.FreezePanes myc.ssFreezeTop End With End With
End Sub
В этом примере я создаю большое число объектов Range. В процессе работы с этими объектами создаются объекты Font и Borders, как результат вызова соответствующих свойств. Здесь же появляются коллекции Cells, Columns, Rows, являющиеся, как я уже говорил, объектами Range. Я использую различные свойства и методы объектов Range, - в частности, свойства ViewableRange, Address, Value, Formula, методы Offset и FreezePanes.
Взгляните, как выглядит страница в Internet Explorer после нажатия в окне браузера командной кнопки с именем "Работа с объектом Range":
увеличить изображение
Рис. 10.5. Программная работа с областями электронной таблицы