Тема 6. Объекты табличного процессора Excel
Работая с кодом VBA, вы должны четко понимать назначение объектов и объектной модели Excel. Целесообразнее рассматривать объекты с точки зрения иерархической структуры.
На вершине объектной модели находятся объект Application – в данном случае. Excel. Но если вы программируете в VBA, запуская VBE в Microsoft Word, то объектом Application будет выступать Word.
Объект Application (то есть Excel) содержит другие объекты. Ниже приведено несколько примеров объектов, которые находятся в объекте Application:
Workbooks (коллекция всех объектов Workbook – рабочих книг);
Windows (коллекция всех объектов window – окон);
AddIns (коллекция всех объектов AddIn – надстроек).
Некоторые объекты могут содержать другие объекты. Например, коллекция Workbooks состоит из всех открытых объектов Workbook, а объект Workbook включает другие объекты, некоторые из которых представлены ниже:
Worksheets (коллекция объектов Worksheet – рабочих листов);
Charts (коллекция объектов Chart – диаграмм);
Names (коллекция объектов Name – имен).
Каждый из этих объектов, в свою очередь, может содержать другие объекты. Коллекция Worksheets состоит из всех объектов Worksheet рабочей книги Workbook. Объект Worksheet включает другие объекты, среди которых следующие: ChartObjects (коллекция объектов ChartQbject – элементов диаграмм);
Range – диапазон;
PageSetup – параметры страницы;
PivotTables (коллекция объектов PivotTable – сводных таблиц).
Может быть, вы пока не готовы правильно воспринять подобную концепцию, но со временем наверняка поймете, что иерархия объектов вполне логична и хорошо структурирована. Кстати, вся объектная модель Excel схематически изображена в электронной справочной системе.
Одной из ключевых концепций в программировании на языке VBA являются коллекции. Коллекция – это группа объектов одного класса (и сама коллекция тоже является объектом). Как указывалось выше. Workbooks – это коллекция всех открытых в данный момент объектов Workbook. Worksheets – коллекция всех объектов Worksheet, которые содержится в конкретном объекте Workbook. Вы можете одновременно управлять целой коллекцией объектов или отдельным объектом этой коллекции. Чтобы сослаться на один объект из коллекции, введите название или номер объекта в скобках после названия коллекции:
Worksheets("Лист!")
Если лист Лист1 – это первый рабочий лист в коллекции, то можно использовать следующую ссылку.
Worksheets(1)
На второй лист в рабочей книге Workbook ссылаются как на Worksheets (2) и т.д.
Кроме того, существует коллекция с названием Sheets, состоящая из всех листов рабочей книги, рабочих листов и листов диаграмм. Если Лист1 – первый лист в книге, то на него можно сослаться так:
Sheets(1)
Если вы ссылаетесь на объект в VBA, для обращения к нему вводятся названия всех расположенных выше в иерархической структуре объектов, разделенных точкой. Что делать, если в Excel открыты две рабочих книги, и в обеих имеется рабочий лист с названием Лист1?
В этом случае в ссылке упоминается контейнертребуемого объекта:
Workbooks("Книга1").Worksheets("Лист1")
Без указания рабочей книги редактор Visual Basic искал бы лист Лист1 в активной рабочей книге,
Чтобы сослаться на определенный диапазон (например, ячейку А1) на рабочем листе с названием Лист1 в рабочей книге Книга1, можно использовать следующее выражение:
Workbooks("Книга!").Worksheets("Лист!").Range("A1")
Полная ссылка из предыдущего примера включает объект Application и выглядит таким образом:
Application.Workbooks("Книга1").Worksheets("Лист!").Range("Al")
Однако в большинстве случаев можно опускать объект Application в ссылках (кроме него использоваться больше нечему). Если объект Книга1 – это активная рабочая книга, то опустите ссылку нанее и запишите рассматриваемое выражение следующим образом:
Worksheets("Лист1").Range("A1")
Если Лист1 является активным рабочим листом, можно еще более упростить выражение: Range("A1")
В Excel отсутствует объект отдельной ячейки. Отдельная ячейка представляет собой объект Range, состоящий из одного элемента.
Простые ссылки на объекты (как в приведенных примерах) ничего не выполняют. Чтобы выполнить действие, прочтите или измените свойства объекта или задайте метод, который выполняется по отношению к объекту.
Запутаться в свойствах и методах несложно: их существует несколько тысяч. В этом разделе показано, как осуществляется доступ к свойствам и методам объектов.
Всеобъекты обладают свойствами. Например, объект Range обладает свойством с названием Value. Вы можете создать оператор VBA, чтобы отобразить свойство Value или задать свойству Value определенное значение. Ниже приведена процедура, использующая функцию VBA MsgBox для отображения окна, в котором представлено значение ячейки Al листа Лист1 активной рабочей книги.
Sub ShowValue()
MsgBox Worksheets("Лист1").Range("Al").Value
End Sub
Код предыдущего примера отображает текущее значение свойства Value для конкретной ячейки – А1 рабочего листа Лист1 активной рабочей книги. Обратите внимание, что если в активной книге отсутствует лист с названием Лист1, то макрос выдаст ошибку.
A MsgBox – полезная функция, часто используемая для отображения результатов выполнения операторов VBA. В этой книге она применяется очень часто. Что необходимо сделать, чтобы изменить свойство Value? Ниже приведена процедура по изменению значения ячейки А1 путем определения значения свойства Value.
Sub ChangeValue1)
Worksheets("Лист1").Range("Al").Value = 123
End Sub
После выполнения этой процедуры ячейка А1 листа Лист1 получает значение 123. Вы можете ввести описанные процедуры в модуль и протестировать их. Многие объекты имеют свойство по умолчанию. Для объекта Range свойством по умолчанию является Value. Следовательно, выражение .value в приведенном выше коде можно опустить, и ничего не изменится. Однако лучше включать ссылку на свойство, даже если оно используется по умолчанию. Кроме свойств, объекты характеризуются методами. Метод – это действие, которое выполняется над объектом. Ниже приведен простой пример использования метода clear по отношению к диапазону ячеек. После выполнения этой процедуры ячейки А1:С3 листа Лист1 станут пустыми, и дополнительное форматирование ячеек будет удалено.
Sub ZapRange()
Worksheets("Лист1").Range("A1:C3").Clear
End Sub
Если необходимо удалить значения в диапазоне, но оставить форматирование, используйте метод ClearContents объекта Range. Многие методы получают аргументы, определяющие выполняемые над объектом действия более детально. Далее приводится пример, в котором ячейка А1 копируется в ячейку В1 с помощью метода Сору объекта Range. В данном примере метод Сору получает один аргумент (адрес ячейки, в которую следует скопировать данные). Обратите внимание, что в примере используется символ продолжения строки (пробел и подчеркивание). Вы можете не применять этого символа, а ввести оператор в одну строку.
Sub CopyOne()
Worksheets("Лист1").Range("Al").Copy
Worksheets("Лист1").Range("Bl")
End Sub
Определение аргументов методов и свойств
В среде программистов VBA определение аргументов методов и свойств часто вызывает определенные трудности. Некоторые методы используют аргументы для дальнейшего уточнения действия; отдельные свойства используют аргументы для дальнейшего определения значения свойства. Иногда один или несколько аргументов вообще применять не обязательно, Если метод использует аргументы, они указываются после названия метода и разделяются запятыми. Если метод использует необязательные аргументы, то можете пропустить и не, оставив пустые места. Рассмотрим метод protect объекта рабочей книги. В справочной системе дается информация о том, что метод Protect имеет три аргумента: пароль, структура, окна. Эти аргументы соответствуют параметрам в диалоговом окне Защита книги. К примеру, если требуется защитить рабочую книгу под названием MyBook.xls, используйте такой оператор:
Workbooks("MyBook.xls").Protect "xyzzy", True, False
В данном случаерабочая книга защищена паролем (аргумент 1). Также защищена структурарабочей книги (аргумент 2), но не ее окна (аргумент 3).
Если вы не хотите присваивать пароль, можно применить такой оператор:
Workbooks("MyBook.xls").Protect , True, False Обратите внимание, что первый аргумент пропущен, а его место обозначено с помощью запятой.
Существует и другой подход (причем в этом случае программу удобнее будет читать) – использование именованных аргументов. Применим именованные аргументы для предыдущего примера.
Workbooks("MyBook.xls").Protect Structure:=True, Windows:=False
Использование именованных аргументов – хорошая идея, особенно в методах с большим количеством необязательных аргументов, когда следует использовать только некоторые из них. При использовании именованных аргументов не требуется оставлять место для пропущенных аргументов.
Для свойств, использующих аргументы, аргументы указываются в скобках. Например, свойство Address объекта Range имеет пять аргументов – все необязательные. Показанный ниже оператор некорректен, так как пропущены скобки:
MsgBox Range("Al").Address False ' некорректно
Правильный синтаксис для этого оператора выглядит так:
MsgBox Range("Al").Address(False)
Кроме того, оператор может записываться с использованием именованного аргумента.
MsgBox Range("Al").Address(rowAbsolute:=False)
Подобные тонкости применения методов и свойств вскоре станут для вас привычным делом, вы даже не будете задумываться, почему это так.
Объект Application
Фактически, объект Application представляет собой среду, в которой выполняются приложения на VBA для Excel. Рассмотрим несколько наиболее важных свойств и методов объекта Application, который реально имеет свыше 120 свойств и более 40 методов.
Сначала опишем свойства объекта Application.
Caption. Надпись, отображаемая в заголовке окна Excel (чтение/запись). Ниже приводятся операторы, выполняющие чтение с выводом заголовка окна Excel и присвоение ему нового заголовка.
Пример 2.1.
MsgBox Application.Caption
Application.Caption = "Мое приложение"
Path. путь к папке, в которой установлен Excel (только чтение)
Пример 2.2.
ExcelPath = Application.Path
Selection. Текущий выделенный объект (рабочий лист, диапазон ячеек, ячейки).
WindowState. Состояние окна (чтение/запись). Свойство WindowState имеет три значения:
• xlNormal - окно в нормальном состоянии;
• xlMaximized - окно развернуто на весь экран;
• xlMinimi zed - окно свернуто.
Пример 2.3.
Application.WindowState = xlNormal
DisplayFormulaBar. Управляет отображением строки формул. Если оно принимает значение True, то строка формул отображается, если - False, то нет (чтение/запись).
Пример 2.4.
Application.DisplayFormulaBar = False
Теперь ознакомимся с наиболее употребительными методами объекта Application. Основное внимание сосредоточим на двух методах: Run и Quit.
Quit закрывает Excel.
Пример 2.5.
Application.Quit
Run. Используется для запуска подпрограммы VBA. Аргумент - строка, задающая имя подпрограммы VBA, например Текст 1, запускаемой на исполнение.
Пример 2.6.
Application.Run macro = Текст1
Объект Workbook
Объект Workbook в иерархии Excel расположен под объектом Application и представляет файл рабочей книги Excel. Рабочая книга может храниться в двух формах: в формате xls (стандартная рабочая книга) или в формате xla (файл программы надстройки - (add-in)). Файлы в формате xla - это полностью откомпилированные программы VBA, текст которых можно скрыть от пользователя. Рассмотрим свойства объекта Workbook.
Name. Имя рабочей книги. Чтобы изменить имя файла рабочей книги, нужно сохранить его с новым именем, используя метод SaveAs (только чтение).
Пример 2.7.
WorkbookName = ThisWorkbook.Name
Если Name заменить на FullName, то будет выведено имя рабочей книги, включающее полный путь к файлу рабочей книги.
Path. Путь к файлу рабочей книги (только чтение).
Пример 2.8.
WorkbookPath = ActiveWorkbook.Path
Saved. Если Saved имеет значение True, то со времени последнего сохранения файла рабочей книги не было сделано изменений, если - False, то в рабочей книге были изменения (чтения /запись).
Пример 2.9.
If Not (ActiveWorkbook.Saved) Then ActiveWorkbook.Save
End If
Приступим к методам объекта Workbook:
Activate. Активирует окно, связанное с заданной рабочей книгой и делает эту рабочую книгу активной.
Пример 2.10.
Workbooks("Объекты Excel.xls").Activate Close. Закрывает рабочую книгу. Аргументы:
• SaveChanges - если True, то рабочая книга сохраняется перед закрытием, если False, то нет;
• FileName - если аргумент SaveChanges имеет значение True, то рабочая книга записывается в файл под именем, определяемым строкой FileName.
Пример 2.11.
ActiveWorkbook.Close SaveChanges = True
Protect. Защищает рабочую книгу, т.е. блокирует возможность внесения изменения. Аргументы:
• Password - строка, в которой записан пароль для рабочей книги;
• Structure - если True, то структура рабочих листов рабочей книги защищена, если False, то не защищена;
• Windows - если True, то структура окон рабочей книги защищена, если False, то не защищена.
Пример 2.12.
Workbooks(1).Protect "password", True, True Save. Сохраняет рабочую книгу. Пример 2.13.
ActiveWorkbook.Save
SaveCopyAs. Копирует рабочую книгу в новый файл, оставляя существующую книгу в памяти с прежним именем. Аргументом является новое имя файла.
Пример 2.14.
ActiveWorkbook.SaveCopyAs "Новая книга.xls"
Рабочая книга записывается под именем "Новая книга".
Объект Worksheet
Объект Workbook является предком объекта Worksheet. Рабочий лист может быть использован как основа конструирования форм, как средство обработки данных и как небольшая база данных. Кроме того, рабочий лист имеет свыше 400 встроенных функций Excel, позволяющих с высокой скоростью выполнять численные преобразования. Рассмотрим свойства объекта
Worksheet.
Index. Числовой индекс заданного объекта в семействе Worksheet (только чтение). Например, вывод номера активного листа выглядит так.
Пример 2.15.
MsgBox ActiveSheet.Index
Name. Имя рабочего листа (чтение/запись). Ниже приводится оператор присвоения первому листу имени «Объект Range»
Пример 2.16.
Worksheets(1).Name = "Объект Range"
Visible. Если свойство Visible принимает значение True, то рабочий лист выводится на экран; если значение False, то рабочий лист не виден (чтение/запись).
Пример 2.17.
Worksheets("Лист2").Visible = False
Сделать видимым лист можно с помощью VBA и команды Формат, Лист, Отобразить.
Пример 2.18.
Worksheets("Лист2").Visible = True
В ряде случаев, вместо False, используют константу xlVeryHidden. Пример 2.19.
Worksheets("Лист2").Visible = xlVeryHidden
Тогда сделать видимым Лист 2 можно только с помощью подпрограммы VBA.
Приступим к методам объекта Worksheet. Activate. Активирует заданный рабочий лист.
Пример 2.20.
Worksheets("Лист1").Activate
Calculate. Вызывает перевычисление всех формул рабочего листа. Пример 2.21.
Worksheets(1).Calculate
Delete. Удаляет рабочий лист из рабочей книги.
Пример 2.22.
Worksheets("Лист5").Delete
Protect. Защищает рабочий лист от внесения изменений. Аргументы:
• password - строка, используемая в качестве пароля для рабочего листа;
• drawingOb jects - если True, то все графические объекты рабочего листа защищены, если False, то не защищены;
• contents - если True, то ячейки рабочего листа защищены; если False, то не защищены;
• scenarios - если True, то сценарий рабочего листа защищен, если False, то не защищен;
• userlnterfaceOnly - если True, тог рабочий лист защищен от изменений пользователя, но не от программ VBA, если False, то рабочий лист защищен от изменений пользователя и программ VBA.
Пример 2.23.
Worksheets("Лист1").Protect "password"
Объект Range
Объект Range содержится в объекте Worksheet и служит для представления одной или более ячеек рабочего листа. Одну ячейку или диапазон ячеек в программе можно задать следующим образом:
• используя ссылку на ячейки, например, на одну Range ("G14") или блок Range ("В1","В6") ячеек;
• используя имя диапазона, например, "Данные". Ссылка на этот диапазон задается выражением Range ("Данные ");
• используя объект ActiveCell, указывающий на оставшуюся ячейку;
• используя объект Selection, которым может быть выделенный диапазон ячеек, рисунок, диаграмма на рабочем листе.
Опишем ряд свойств и методов объекта Range с примерами их применения. Начнем с его свойств.
Value. Значение, которое содержит одна ячейка или диапазон ячеек. Если диапазон содержит несколько ячеек, то значением свойства является массив данных (чтение / запись).
Пример 2.24.
Worksheets(1).Range("Al").Value = 1
Worksheets(1).Range("B5","Bll").Value = 1
Cells. Значение, которое содержит ссылку на одну ячейку или диапазон ячеек. Для свойства Cells указываются номера строки и столбца ячейки, на которую происходит ссылка. Например, свойство Cells при ссылке на ячейку В10, имеет вид Cells(10,2). Если эти номера отсутствуют, то ссылка будет относиться ко всем ячейкам выделенного объекта (чтение / запись). Запишем операции, позволяющие заносить в А2 значение 2:
Пример 2.25.
ActiveCell.Cells(2,1).Activate ActiveCell.Value = 2
в ячейку A3 значение 3,
Пример 2.26.
Worksheets(1).Range("A3").Select Selection.Value = 3 -
в ячейки выделенного блока А4:В4 значение 4
Пример 2.27.
Worksheets(1).Range("А4","В4").Select Selection.Cells.Value = 4
Здесь Activate, Select - методы, позволяющие сделать активным одну ячейку или блок ячеек соответственно.
Formula. Свойство, служащее для задания и чтения формулы (чтение / запись). Например, чтобы поместить в ячейку А5, результат суммирования данных в ячейках В5:В11, надо применить оператор
Пример 2.28.
Worksheets (1) .Range("А5").Formula = "=Sum(В5:Bll)"
Существуют две нотации или два стиля представления ссылок в формулах: А1 и R1C1. Относительные ссылки в последней формуле представлены в нотации А1. В нотации R1C1 эта формула й свойство Formula с относительными ссылками запишутся как,
Пример 2.29.
Worsheets (1) .Range("А5").FormulaR1C1=_ "=Sum(R[5]С [2] :R[11]С[2])"
а с абсолютными ссылками
Пример 2.30.
Worksheets(1).Range("А5").FormulaR1C1=_
"=Sum(R5C2:R11C2)"
Здесь 5,11- номера строк, 2 - номер столбца.
Другая разновидность формул - формулы массива. Они позволяют выполнять вычисления в строках и столбцах данных используя свойство FormulaArray. Например, операции умножения содержимого соответствующих ячеек А4:А6 и В5:В7 на листе Лист2 и последующего сложения с помещением результата в ячейку СЮ в VBA запишутся следующим образом:
Пример 2.31.
Worksheets("Лист2").Range("С10") ="=Sum(А4:А6*В5:В7)"
Следует отметить, что вручную названия функций набираются или вводятся на русском языке, а в программе VBA они записываются на английском языке. Приведем перечень соответствий наиболее употребимых функций на русском и английском языках: СРЗНАЧ - Average, СЧЕТ - Count, МАКС - Мах, МИН - Min, МЕДИАНА - Median, ДИСП - Var, СТАНДРОТКЛОН - Stdev, БДСУММ - DSum, ДСРЗНАЧ - DAverage, СЕГОДНЯ - Now.
Name. Используется для присвоения имени диапазону ячеек (запись). Например, для задания имени "Данные" диапазону А4:В4 надо использовать оператор
Пример 2.32.
Worksheets(1).Range ("А4",'"В4").Name = "Данные"
Text. Представленное в виде текстовой строки значение, содержащееся в диапазоне. Значением диапазона, состоящего из нескольких ячеек, является массив строк (чтение). Например, чтобы в окне сообщений MsgBox вывести текстовую информацию из ячейки А6, следует задать оператор.
Пример 2.33.
MsgBox Worksheets(1).Range("А6").Text
Рассмотрим некоторые методы объекта Range.
ClearContents. Очищает все значения и формулы диапазона, оставляя форматы.
Пример 2.34.
Worksheets(1).Range("В5").ClearContents
Calculate. Вызывает перевычисление всех формул диапазона, например, формулы в ячейке А5.
Пример 2.35.
Worksheets(1).Range("А5").Calculate
Goal Seek (Поиск решения). Подбирает параметр для формулы до тех пор, пока не будет вычислено заданное значение. Пример 2.36.
Для продукта 1 требуется определить в процентах величину относительного прироста прибыли в 1996 и 1997г. и поместить результат в ячейку с именем "Рост", используя в качестве исходных данных содержимое ячейки В2 с именем "РостПродукта", а в качестве целевого значения - 11250000 (содержимое ячейки С2). Метод GoalSeek подбирает значение в ячейке "Рост" до тех пор, пока значение ячейки "РостПродукта" не станет равным 7500000.
A | В | С | |
Продажи в 1996 | Продажи в 1997 | ||
Продукт1 | 7 500 000р. | И 250 000р. | |
Продукт2 | 5 174 162р. | 7 761 243р | |
Продукт3 | 2 108 040р. | 3 162 060р. | |
Продукт4 | 3 562 773р. | 5 3440 160р. | |
Продукт5 | 8 415 787р. | 12 623 681р. | |
Продукт6 | 3 304 785р. | 4 957 178р. |
Range("РостПродукта").GoalSeek 75000000,Range("Рост")
Sort. Сортировка данных по возрастанию и убыванию с использованием одного из трех ключей keyl, key2, кеуЗ, называемых ссылками на первое, второе и третье упорядочиваемое имя. Причем, для каждого из указанных полей задается порядок сортировки orderl, order2 или order3, имеющий два значения: xlAscending (по возрастанию), xlDescending (по убыванию).
Диапазоны A1:D2 рабочего листа Лист 4 сортируется следующей командой в порядке возрастания так, что начальная сортировка происходит по первому столбцу А, а второстепенная - по второму В.
Пример 2.37.
Worksheets("Лист4").Select
Range("A1:D21").Sort keyl:=Range("Al"),
кеу2:=Range("Bl")
Subtotal. Вставляет промежуточные итоги в список данных, основываясь на изменениях в определенных полях данных. Чтобы правильно сгруппировать данные для вычисления промежуточного итога их необходимо отсортировать. Метод Subtotal содержит следующие аргументы:
• GroupBy - номер столбца, по которому вычисляется промежуточные итоги;
• Function - одна из приведенных ниже функций для вычисления промежуточных итогов:
♦ xlAverage - среднее;
♦ xlCount - количество значений;
♦ xlCountNums - количество чисел;
♦ xlMax - максимум;
♦ xlMin-минимум;
♦ xlProduct - произведение;
♦ xlSum-сумма;
• TotalList - массив целых чисел - номеров столбцов, по которым проводятся вычисления промежуточных итогов;
• Replace - замена существующих промежуточных итогов, если значение True;
• PageBreaks - вставка символа разрыва страницы после каждой группы, если значение True;
• SummaryBelowData - вывод промежуточных итогов над данными, если значение xlSummaryAbove и под данными, если значение xlSummaryBelow.
Пример вычисления промежуточного итога - среднего, в первом столбце блока А1:D1 приводится ниже:
Пример 2.38.
Range("Ai:Dl").Select Selection.Subtotal GroupBy:=1,
Function:=xlAverage, _ TotalList:=Array(3), Replace:=False, PageBreaks:=False, SummaryBelowData:=xlSummaryAbove
Consolidate. Объединяет данные из нескольких диапазонов, расположенных на разных рабочих листах, в одну таблицу с использованием одной из ранее рассмотренных итоговых функций. Метод Consolidate имеет следующие аргументы:
• Sources - массив ссылок в нотации R1C1, задающих адреса источников консолидации;
• Function - консолидация базируется на сходстве заголовков в источниках данных, если значение True;
• LeftColumn - консолидация основывается на заголовках строки в левых столбцах консолидируемых диапазонов;
• CreateLinks- консолидируемая таблица связывается с исходными данными.
Пример записи на VBA операции консолидации путем суммирования данных - доходов, из таблиц расположенных на листах Лист 1, Лист 2, приводится ниже
Пример 2.39.
Range("А1:D4").Consolidate
Sources: =Array("' [Книга!]Лист1'!R1C1:R4C4",_
[Книга2]Лист2' !R1C1:R4C4") , Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
Объект Scenario
С помощью объекта Scenario можно хранить несколько значений в одной ячейке. Каждое уникальное значение в ячейке или каждая уникальная группа значений для набора ячеек называют сценарием.
Сценарий добавляется в рабочий лист с помощью VBA путем вызова метода Add, имеющего синтаксис:
Add(Name,ChangingCelIs,Values,Comment,Locked,Hidden)
Метод Add имеет аргументы:
• Name - текстовая строка представляющая имя сценария;
• ChangingCells - диапазон ячеек, к которым применяется сценарий (изменяемые ячейки);
• Values - одно значение или массив значений, применяемых к изменяемым ячейкам;
• Locked - защита сценария (изменения не допускаются), если установлен в True;
• Hidden - защита сценария (невозможен просмотр), если установлен в True.
После добавления сценария на рабочий лист можно вывести на экран результаты работы сценария и удалить с помощью методов Show и Delete соответственно. Можно изменить группу изменяемых ячеек посредством метода ChangeScenario, имеющего синтаксис:
Changescenario(ChangingCells,Values)
• ChangingCells - группа ячеек, которая будет играть роль новой группы изменяемых ячеек;
• Values - массив с новыми значениями изменяемых ячеек. Рассмотрим два часто применяемых свойства объекта Scenario:
ChangingCells, вызывающее диапазон изменяемых ячеек, и Value, вызывающее массив текущих значений изменяемых ячеек.
Пример 2.40.
Scenarios(1).ChangingCells.Select; Scenarios(1).Values= _
Worksheets("Sheetl").Range("C5:E5") Scenarios(1).Value=Array(1, 3, 5)
Дата добавления: 2016-01-26; просмотров: 1085;