Шаг 39.
VBA в MSExcel.
Сценарии и определение структуры данных. Объект Scenario

    На этом шаге мы рассмотрим основные свойства и методы этого объекта и приведем пример его использования.

    Объект Scenario (Сценарий) позволяет хранить несколько значений в одной ячейке. Каждое уникальное значение в ячейке или каждая уникальная группа значений для группы ячеек называется сценарием. Семейство Scenarios (Сценарии) содержит все сценарии рабочего листа. Вручную сценарии создаются с помощью команды Сервис | Сценарии (Tools | Scenarios).

    Рассмотрим методы объекта Scenario.

Таблица 1. Методы объекта Scenario
Метод Назначение
Add Добавляет новый сценарий. Синтаксис:
Add (Name, ChangingCells, Values, Comment, Locked, Hidden)
Аргументы:
  • Name — имя сценария;
  • ChangingCells — диапазон, отводимый под изменяемые ячейки сценария;
  • Values — массив значений, вводимых в изменяемые ячейки;
  • Comment — текстовая строка комментариев;
  • Locked — допустимые значения: True (заблокировано изменение сценария) и False (в противном случае);
  • Hidden — допустимые значения: True (сценарий скрыт) и False (в противном случае).
Show Показывает сценарий посредством ввода значений сценария в изменяемые ячейки
ChangeScenario Изменяет группу изменяемых ячеек. Синтаксис:
  ChangeScenario (ChangingCells, Values)
  • ChangingCells — группа ячеек, которая будет играть роль новой группы изменяемых ячеек;
  • Values — массив с новыми значениями изменяемых ячеек.
Delete Удаляет сценарий

    Рассмотрим наиболее часто используемые свойства объекта Scenario.

Таблица 1. Свойства объекта Scenario
Свойство Назначение
ChangingCells Возвращает диапазон изменяемых ячеек. Например:
  Scenarios(1).ChangingCells.Select
Value Возвращает массив текущих значений изменяемых ячеек. Например:
  Scenarios(1).Values = Worksheets("Лист1").Range("C5:T5") 
  или 
  Scenarios(1).Values = Array(1,3,5,7,11,13,17,19)

    Приведем соответствие между аргументами методов Add и Show семейства Scenarios и созданием сценариев вручную при помощи команды Сервис | Сценарии (Tools | Scenarios) на примере создания расчета суммарных затрат (рисунок 1) при двух вариантах (сценариях) стоимостей комплектующих и расходных материалов (таблица 2).


Рис.1. Расчет суммарных затрат

Таблица 2. Два варианта стоимостей
Вариант Комплектующие Расходные материалы
1 1000 200
2 800 300

    Суммарные затраты вычисляются в ячейке В5 по формуле:

  =СУММ(В3:В4)
  1. Выберите команду Сервис | Сценарии (Tools | Scenarios). Появится диалоговое окно Диспетчер сценариев (Scenario Manager) (рисунок 2).


    Рис.2. Диалоговое окно Диспетчер сценариев

        Нажмите кнопку Добавить (Add).

  2. В появившемся диалоговом окне Добавление сценария (Add Scenario) (рисунок 3):


    Рис.3. Диалоговое окно Добавление сценария

    • В поле Название сценария (Scenario Name) вводится имя создаваемого сценария. Введите, например, Вариант 1.
    • В поле Изменяемые ячейки (Changing Cells) вводятся ссылки на ячейки, в которые будут заноситься значения, соответствующие данному сценарию. Введите ссылки на диапазон ячеек $В$3:$В$4.
    • Нажмите кнопку ОК.
  3. В появившемся диалоговом окне Значения ячеек сценария (Scenario Values) в поля, помеченные именами изменяемых ячеек, вводятся соответствующие значения (рисунок 4).


    Рис.4. Диалоговое окно Значения ячеек сценария

        В данном случае в поле $B$3 введите 1000, а в поле $B$4 введите 200. Нажатие кнопки Добавить (Add) приведет к появлению диалогового окна Добавление сценария (Add Scenario), в котором следует ввести параметры второго сценария и т.д. После создания требуемого количества сценариев нажмите кнопку ОК, которая приведет к завершению создания сценариев.

  4. В появившемся диалоговом окне Диспетчер сценариев (Scenario Manager) выбором в списке Сценарии (Scenarios) соответствующего сценария и нажатием на кнопку Вывести (Show) производится ввод соответствующих этому сценарию значений в изменяемые ячейки (рисунок 5).


    Рис.5. Диалоговое окно Диспетчер сценариев после создания двух сценариев

  5. Приведенное выше создание вручную сценариев программируется следующими инструкциями:
      ActiveSheet.Scenarios.Add  _
        Name:= "Вариант 1", _ 
        ChangingCells:=Range ("B3:B4"), _
        Values:=Array("1000", "200") , _
        Comment:="Автор: Иван Иванов, 28.03.99", _
        Locked:=True,  Hidden:=False 
      ActiveSheet.Scenarios.Add  _
        Name: ="Вариант 2", _ 
        ChangingCells:=Range("B3:B4"), _
        Values:=Array ("800", "300"), _
        Comment :="Автор: Иван Иванов, 28.03.99", _
        Locked:=True, Hidden:=False 
    

        Отображение сценариев на рабочем листе осуществляется следующими двумя инструкциями:

      ActiveSheet.Scenarios("Вариант 1").Show 
      ActiveSheet.Scenarios("Вариант 2").Show
    

    На следующем шаге мы рассмотрим объект Outline.




Предыдущий шаг Содержание Следующий шаг