Vba для excel создание интерфейса
Интерфейсы описывают характеристики свойств, методов и событий, но не содержат сведений о реализации до структур или классов.
В этом пошаговом руководстве показано, как объявить и реализовать интерфейс.
В этом пошаговом руководстве не содержатся сведения о создании пользовательского интерфейса.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Определение интерфейса
Откройте новый проект приложения Windows на Visual Basic.
добавьте в проект новый модуль, выбрав в меню Project пункт добавить модуль .
Присвойте новому модулю Module1.vb имя и нажмите кнопку Module1.vb . Отобразится код для нового модуля.
Определите интерфейс с именем TestInterface в Module1 , введя Interface TestInterface между Module операторами и End Module , а затем нажав клавишу ВВОД. Редактор кода смещает ключевое слово и добавляет End Interface оператор для формирования блока кода.
Определите свойство, метод и событие для интерфейса, поместив следующий код между Interface операторами и End Interface :
Реализация
Вы можете заметить, что синтаксис, используемый для объявления членов интерфейса, отличается от синтаксиса, используемого для объявления членов класса. Это различие отражает тот факт, что интерфейсы не могут содержать код реализации.
Реализация интерфейса
Добавьте класс с именем ImplementationClass , добавив следующий оператор в Module1 , после End Interface оператора, но перед End Module оператором, а затем нажав клавишу ВВОД:
При работе в интегрированной среде разработки Редактор кода предоставляет соответствующий оператор при нажатии клавиши ВВОД.
Добавьте следующий Implements оператор в ImplementationClass , который именует интерфейс, реализуемый классом:
При указании отдельно от других элементов в верхней части класса или структуры Implements оператор указывает, что класс или структура реализуют интерфейс.
При работе в интегрированной среде разработки Редактор кода реализует члены класса, необходимые при нажатии клавиши ВВОД, и вы можете пропустить следующий шаг.
Если вы не работаете в интегрированной среде разработки, необходимо реализовать все члены интерфейса MyInterface . Добавьте следующий код в ImplementationClass для реализации Event1 , Method1 и Prop1 :
Implements Оператор именует интерфейс и член интерфейса, который реализуется.
Завершите определение Prop1 , добавив закрытое поле в класс, который сохранил значение свойства:
Возврат значения pval из метода доступа get свойства.
Задайте значение pval в методе доступа к набору свойств.
Завершите определение Method1 , добавив следующий код.
Тестирование реализации интерфейса
Щелкните правой кнопкой мыши форму запуска проекта в Обозреватель решенийи выберите пункт Просмотреть код. Редактор отображает класс для начальной формы. По умолчанию вызывается Form1 Форма запуска.
Добавьте в класс следующее testInstance поле Form1 :
Если объявить testInstance как WithEvents , Form1 класс может управлять его событиями.
Добавьте следующий обработчик Form1 событий в класс для обработки событий, testInstance вызванных:
Добавьте подпрограммы с именем Test в Form1 класс для проверки класса реализации:
Test Процедура создает экземпляр класса, реализующего MyInterface , присваивает этот экземпляр testInstance полю, устанавливает свойство и запускает метод через интерфейс.
Добавьте код для вызова Test процедуры из Form1 Load процедуры формы запуска:
Объектно-ориентированное программирование позволяет создавать графический интерфейс разрабатываемых приложений на основе использования управляющих элементов. Элементы управления являются объектами. Поэтому, как любые объекты, они обладают свойствами, методами и могут откликаться на события. Элементы управления можно вставлять как в рабочие листы, так и в экранные формы. Экранные формы (их также называют пользовательскими формами, от англ. UserForm) — это окна (обычного вида либо диалоговые), являющиеся частью интерфейса приложения.
Работа с пользовательской формой состоит из нескольких этапов:
- Открыть или создать файл для работы;
- Перейти в редактор Visual Basic;
- Создать пользовательскую форму;
- Применить к созданной форме свойства;
- Создать в форме элементы управления;
- Написать процедуры обработки событий.
Панель элементов управления
При создании экранной формы автоматически отображается “Панель инструментов”. “Панель инструментов” содержит элементы управления, которые можно использовать в экранной форме. Если панель инструментов не появилась при создании экранной формы, то вызвать элементы управления можно, используя команду View | ToolBox или нажав на кнопку .
“Панель инструментов” (или “Панель элементов управления”) предназначена для создания и редактирования объектов вашего приложения. При написании программ на VBA вы обязательно столкнетесь с английскими названиями элементов управления, поэтому в таблице даны русские и английские названия элементов управления.
Label (надпись) — статическая область текста, обычно содержащая какую-либо поясняющую информацию, а также это поле часто используют для вывода полученных результатов.
TextBox (поле) — элемент для ввода текста пользователем, который в последующем используется в программе.
CommandButton (кнопка управления) — элемент, с помощью которого в пользовательскую форму можно вставить командную кнопку. При нажатии на командную кнопку выполняются запрограммированные вами действия.
ListBox (список) — применяется для хранения списка значений. В списке пользователь может выбрать одно или несколько значений, которые в дальнейшем используются в программе.
ComboBox (поле со списком) — применяется для хранения списка значений. Этот элемент сочетает возможности элементов ListBox и TextBox.
ScrolBar (полоса прокрутки) как элемент управления — это не совсем то, чем вы привычно пользуетесь для прокрутки, например, рабочего листа. В данном случае полосы прокрутки применяются в качестве механизмов выбора. В графических программах вы, наверное, видели, как с помощью полос прокрутки можно выбрать цвет либо сделать изображение более светлым или более темным.
SpinButton (счетчик) — используется для ввода или изменения числовых значений.
OptionButton (переключатель) — позволяет выбрать один из нескольких взаимоисключающих параметров или действий. Переключатели обычно отображаются группами, обеспечивая возможность альтернативного выбора.
CheckBox (флажок) — предоставляет пользователю возможность выбора. Флажок обычно имеет два состояния: установленное и сброшенное.
Togglebutton (выключатель) — кнопка, которая остается нажатой после щелчка на ней, и возвращается в исходное состояние после повторного щелчка.
Frame (рамка) — используется для визуального объединения каких-либо элементов управления в группу, показывая, что эти элементы связаны между собой.
Image (рисунок) — позволяет вставлять графические элементы в экранные формы. С помощью этого элемента можно вставлять изображения из графических файлов следующих типов: bmp; cur; gif; ico; jpg; wmf.
MultiPage (набор страниц) — этот элемент управления внешне похож на набор вкладок и также содержит одну или несколько страниц. Отличие между ними заключается в том, что страницы являются формами, содержащими собственные элементы управления (включая наборы вкладок), которые можно отформатировать всеми средствами форматирования экранных форм.
TabStrip (набор вкладок) — элемент управления, который содержит одну или несколько вкладок. Используется для организации в группы связанной информации.
RefEdit (поле со свертыванием) — этот элемент похож на обычное поле ввода, но имеет кнопку с правой стороны поля, которая сворачивает экранную форму, что позволяет легко выбрать любой диапазон ячеек на рабочем листе.
Для нашей работы мы будем использовать не все элементы управления. Наиболее часто используемыми являются:
- Label (надпись);
- TextBox (поле);
- CommandButton (кнопка управления);
- Image (рисунок);
- OptionButton (переключатель);
- CheckBox (флажок).
Создание пользовательской формы
Для создания пользовательской формы надо выполнить следующие действия:
1. Открыть новый файл или любой файл, в котором вы уже работали.
2. Выполнить команду меню Сервис | Макрос | Редактор Visual Basic. Откроется окно редактора Visual Basic.
3. Щелкнуть на кнопке Insert UserForm панели инструментов окна редактора Visual Basic или выполнить команду Insert | UserForm (Вставка | Экранная форма). Появится новая экранная форма.
Созданная экранная форма имеет по умолчанию строку с заголовком UserForm1. Сетка на макете формы помогает размещению элементов управления, при отображении формы в приложении сетка не видна.
После создания формы необходимо просмотреть свойства этого объекта и изменить установки, если это требуется по условию задачи. Для отображения окна свойств надо выбрать команду View | Properties Window (Вид | Окно свойств) или щелкнуть по одноименной кнопке на панели инструментов .
Наиболее часто используемые свойства объекта UserForm
Наиболее часто используемые методы объекта UserForm
Используя панель элементов управления, из незаполненной формы можно сконструировать любое требуемое диалоговое окно. Размещение элементов управления в форме производится следующей последовательностью действий:
- Нажать значок того элемента, который вы хотите размеcтить в форме.
- Поместить указатель мыши на то место, где будет располагаться элемент управления.
- Нажать левую кнопку мыши и, не отпуская ее, растянуть появившийся прямоугольник до нужных размеров.
- Отпустить кнопку мыши, элемент создан.
В экранной форме можно также перемещать или изменять размеры элементов управления. Кроме того, можно изменить размеры и самой экранной формы, перетащив ее маркеры изменения размеров.
После успешного завершения разработки экранной формы можно просмотреть в действии полученный результат с помощью команды “Run | Run Sub/UserForm” (“Выполнить | Выполнить процедуру/экранную форму”) или нажать клавишу . Форма отобразится поверх текущей рабочей книги. Щелчок на кнопке “Закрыть” (находится в верхнем правом углу формы) закроет экранную форму и возвратит вас в редактор Visual Basic.
Разрабатываемое на языке приложение называется проектом. Проект включает в себя не только форму с размещенными на ней управляющими элементами, но и программные модули обработки событий, которые описывают поведение объектов приложения и взаимодействие объектов между собой.
Практическая работа № 4–1 “Функции VBA”
Создадим простое приложение — “Функции VBA”. На первом занятии мы познакомились с рядом функций. Отработаем некоторые из них. Создадим пользовательскую форму, разместим в ней элементы управления Label (надпись), CommandButton (кнопка управления). При нажатии на кнопку “Запуск” будет генерироваться случайное число. Это число должно отображаться в элементе Label (надпись). Затем вычислим корень квадратный из этого числа, его синус и косинус, а результаты выведем в другие элементы управления Label (надпись). Кроме этого, в форме выведем текущую дату. По нажатию на кнопку “Выход” форма скрывается с экрана. Для запуска формы на листе Excel необходимо создать кнопку с надписью “Функции VBA”.
Приступим к разработке и реализации приложения.
1. Запустите Excel.
2. Загрузите VBA (Сервис | Макрос | Редактор Visual Basic).
3. Проверьте, чтобы на экране появилось окно проекта и окно свойств. Выполните команду Вставить форму или Insert | UserForm. Форму можно увеличить стандартным способом, ухватившись за правый нижний угол и растягивая ее.
4. Сделайте появившуюся форму активной и установите значения свойств данного объекта:
5. Теперь добавьте в форму средства управления. Нам при разработке потребуется всего два инструмента: Label (надпись) и CommandButton (кнопка управления) с панели элементов. Форма с элементами управления в режиме конструктора примет следующий вид:
6. Для вывода результатов расчета подготовим элементы Label1, Label2, Label3, Label4:
Установите значения свойств объекта Label1 – Label4:
7. Для пояснительных надписей подготовим элементы Label5, Label6, Label7, Label8.
Установите значения свойств объекта Label5 – Label8:
8. Для вывода текущей даты подготовим элемент управления Label9.
Установите значения свойств объекта Label9:
9. Добавим в форме командную кнопку для запуска программы, применив элемент управления CommandButton1.
Установите значения свойств объекта CommandButton1:
10. Добавьте в форме командную кнопку для закрытия формы, применив элемент управления CommandButton2.
Установите значения свойств объекта CommandButton2:
11. После выполнения всех пунктов форма в режиме конструктора будет выглядеть так:
Перейдем к написанию текста программы.
12. Перед написанием программы проверим работоспособность нашей формы. Для вывода формы на экран выполним команду Run | Run Sub/UserForm или нажмем клавишу . На фоне листа Excel появится созданная нами форма, но при нажатии на кнопку “Запуск” или “Выход” ничего не произойдет, т.к. мы не запрограммировали отклик на событие (нажатие кнопки). Закроем форму и перейдем в редактор VBA.
13. В форме дважды щелкните на кнопке “Запуск”, чтобы вывести заготовку программы, связанную с командной кнопкой.
Программа начинается с заголовка Private Sub (локальная процедура) и заканчивается предложением End Sub (конец процедуры). Между этими предложениями записывается текст программы.
14. Появится заготовка программы. Напишем текст программы, а затем разберем каждую строку.
Вспомним синтаксис установки значения свойства объекту:
У нас каждая строка программы содержит название объекта, его свойство (левая часть строки, до равенства) и установку значения свойства (правая часть строки, после знака равенства).
- Label — объект.
- Caption — свойство.
- Date — значение свойства (текущая дата).
- Rnd * 90 — значение свойства. Функция генерации случайных чисел Rnd генерирует случайное число между 0 и 1. Это функция, которую мы часто будем применять в работе.
- Функция Int возвращает целую часть аргумента (в данном случае — произведение случайного числа на 90) и отбрасывает дробную часть аргумента. Результат — числа от 1 до 90.
- Sqr(Label1.Caption). Так как случайное число сохранилось в объекте Label1, мы применяем функцию Sqr, аргументом которой является объект, в котором хранится случайное число.
- Sin(Label1.Caption * 3.14159 / 180) — аргумент функции синус рассматривается в радианах, но для того, чтобы было привычнее анализировать полученные результаты, применим формулу для преобразования градусов в радианы, т.е. преобразуем случайное число (градусы) в радианы и получим результат.
Выведите форму на экран, нажав клавишу , и проверьте работоспособность кнопки “Запуск”. Результат выполнения программы показан на рисунке.
15. Теперь запрограммируем кнопку “Выход”. Перейдем в редактор VBA и дважды щелкнем по кнопке “Выход” в форме. Появится заготовка программы. Вставим одну строку программы UserForm1.Hide.
- UserForm1 — это объект.
- Hide — это метод.
Кроме запуска программы по нажатию клавиши , существует еще один способ вывода формы на экран. Для этого:
1. Перейдите в приложение Excel на любой лист.
2. На панели элементов управления выберите инструмент CommandButton и нарисуйте кнопку на листе Excel.
3. Вызовите свойства этого элемента, нажав на панели элементов управления кнопку “Свойства” .
4. Установите значения свойств объекта CommandButton1.
5. Запрограммируйте кнопку “Функции VBA”. Для этого вызовите заготовку программы, нажав на панели элементов управления кнопку “Исходный текст” , не забыв перед этим выделить кнопку “CommandButton1”.
6. Вставьте одну строку программы — UserForm1.Show, что означает показать форму UserForm1 на экране.
7. Затем перейдите на лист приложения Excel и отключите режим конструктора на панели элементов управления .
8. Запустите программу.
9. Сохраните свою работу.
Практическая работа № 4–2 “Вычисления”
Задание: спроектировать форму для вычисления умножения, сложения, вычитания и деления двух чисел, заданных датчиком случайных чисел.
1. Запустите Excel.
2. Загрузите VBA (Сервис | Макрос | Редактор Visual Basic).
3. Проверьте, чтобы на экране появилось окно проекта и окно свойств.
4. Выполните команду Вставить форму или Insert | UserForm, назовите форму “Вычисления” и вызовите панель “Toolbox”.
5. Спроектируйте в форме 4 командные кнопки “CommandButton” и пять надписей “Label”.
Значения свойств объектов установите самостоятельно.
У вас получится:
6. В форме дважды щелкните на кнопке “Х”, чтобы вывести заготовку программы.
Программа начинается с заголовка Private Sub и заканчивается предложением End Sub (конец процедуры). Между этими предложениями запишем текст программы:
7. Аналогично для кнопок “+”, “–”, “:” и “Выход” программа будет следующая:
8. Проверьте работоспособность формы с помощью команды “Run | Run Sub/UserForm” (“Выполнить | Выполнить процедуру/экранную форму”). Также можно выполнить проверку с помощью кнопки в меню или нажав на клавишу .
9. На листе Excel создайте кнопку вызова формы и назовите ее “Вычисления”, переименуйте Лист1 в лист “Вычисления”.
10. Вызовите “Панель Элементов управления” и нарисуйте с ее помощью кнопку.
11. Выделив кнопку, вызовите через правую кнопку мыши “Свойства” и отформатируйте выделенную кнопку.
12. Выделите кнопку “Вычисления”, нажмите на панели элементов управления кнопку “Исходный текст” .
Тип урока: урок закрепления новых знаний и выработки умений.
Цель урока: закрепление пройденного материала по созданию пользовательской формы; вставки надписей, полей, кнопок и картинки в пользовательскую форму; программирование кнопок пользовательской формы; вызов пользовательской формы на рабочий стол редактора Excel; проверка работы пользовательской формы.
Оборудование: компьютер, проектор, экран.
Продолжительность работы: 40 минут.
Домашнее задание: 5 минут.
- Открыть или создать файл для работы;
- Перейти в редактор Visual Basic (Сервис >Макрос >редактор Visual Basic);
- Создать пользовательскую форму (Insert>UserForm);
-
На панели элементов выбрать пиктограмму “Label” - “Надпись”;
- в появившемся окне свойств выбрать:
- свойство “Caption”, в котором вместо слова “Label1” написать слово “Расстояние”;
- свойство “TextAlign”, в котором поставить цифру 2 – выравнивание по центру.
свой файл “Машина” и выполнить команду “Открыть”;
- в свойстве “PictureAlignment” поставить “0”, должна появиться картинка
Вашей машины.
-
Запрограммировать кнопку “CommandButton2” - “Расчет скорости” для этого:
- два раза щелкнуть по кнопке;
- написать программу:
S = Val(TextBox1) - считываем значение из окошка TextBox1
T = Val(TextBox2) - считываем значение из окошка TextBox2
V = S / T - производим вычисление скорости
TextBox3 = Str(V) - полученное значение записываем в окошко TextBox3
Домашнее задание:
Создать пользовательскую форму по заданному образцу и проверить ее работу.
Активизировать и интегрировать разрозненные знания по отдельным темам, полученные при изучении электронных таблиц; провести плавное “погружение” учащихся в изучение нового серьезного материала по созданию макросов в приложении Excel и расшифровки команд, полученных с помощью MacroRecordera, и хранящихся в форме программ на языке VBA; ввести понятие объекта и метода и выполнить при этом задание, которое впоследствии может послужить примером для разработки автоматизированной информационной системы.
Прежде чем приступить к изучение объектно-ориентированного языка VBA я предлагаю изучить создание макросов и научиться применять их на следующей задаче.
Предложенную задачу можно представит как объединение 4 задач:
1. Хранение и обработка числовых данных в электронной таблице с применением относительных и абсолютных ссылок, а также математических и логических функций. В своем примере я привожу задачи по работе туристического агенства, отеля, книжного холдинга и фабрики по пошиву верхней одежды.
2. Проведение статистической обработки полученных результатов с использованием специальных встроенных функций. При использовании статистических функций мы их записываем с помощью MacroRecordera, то есть, сохраняем в виде процедуры.
3. Построение диаграмм и графиков по полученным расчетным данным в таблицах.
4. Создание пользовательского интерфейса (Меню), позволяющего объединить все решенные задачи (с применением макросов).
Объектно-ориентированный язык программирования Visual Basic for Application (VBA) является версией языка Visual Basic и предназначен для использования в среде приложений Microsoft Office (Word, Excel, Access и др.)
Существует достаточно простая возможность создания программы (макроса) на языке VBA с использованием MacroRecorder.
MacroRecorder – это транслятор, который переводит все действия пользователя с момента запуска MacroRecorder до окончания записи макроса на язык VBA.
I этап - Создание пользовательского интерфейса
Подготовка листа Excel для дальнейшей работы:
1. В рабочей книге должно быть 5 листов. Переименуйте листы следующим образом:
l Лист1 - “Меню”
l Лист2 – “Отель”
l Лист3 – “Фабрика”
l Лист4 – “Холдинг”
l Лист5 – “Турагенство”
2. С помощью коллекции WordArt подготовьте на созданном листе “Меню” надписи “Меню” и “4 задания”.
3. Вызовите на экран дополнительную панель “Рисование”.
4. Используя элемент “Автофигура” нарисуйте на листе одну кнопку (всего кнопок будет 4).
5. Используя контекстно-зависимое меню этого объекта, добавьте надпись на кнопке “Турагенство”.
6. Измените, дизайн кнопки, т.е. поменяйте фон кнопки, а также начертание, название шрифта и размер букв надписи на кнопке.
Рис. 1. Так выглядит пользовательский интерфейс “4 задания”
II этап - Создание макросов.
1. Установим курсор на листе “Меню”.
2. Активизируем MacroRecoder с помощью команды Сервис-Макрос-Начать запись.
Появится диалоговое окно “Запись макроса”. Это диалоговое окно позволяет задать параметры макроса.
Рис. 2. Диалоговое окно “Запись макроса”
По умолчанию макросам присваиваются имена Макрос1, Макрос2 и т.д. Чтобы легче было распознать макрос, лучше присвоить ему имя, поясняющее его назначение. Присвоим макросу имя “Турагенство” и нажмем кнопку Ок. Появится плавающая панель инструментов с кнопкой “Остановить запись”. Теперь все производимые нами действия будут записываться до тех пор, пока не будет нажата эта кнопка.
Не выполняйте никаких лишних действий. Все ваши действия фиксируются и записываются. Надо выполнить только одно действие.l Перейдите на лист “Турагенство”.
Остановите запись макроса, нажав на кнопку “Остановить запись”.
3. Просмотрите записанную программу. Для этого выполните команду Сервис-Макрос-Макросы. Созданная программа записалась в Модуле1.
Рис. 3. Главное окно редактора VBA
Таким образом, MacroRecorder записал нужную нам программу из одной строки:
Sheets(“Турагенство”).Select – выбрать лист “Турагенство”.
III этап - “Оживление” кнопок.
1. Для того чтобы эта программа выполнялась, то есть, происходил переход на лист “Турагенство” при нажатии на одноименную кнопку, выполните следующие действия:
l закройте окно редактора VBA;
l на листе “Меню” вызовите контекстно-зависимое меню на автофигуре с надписью “Турагенство”Рис. 4. Контекстно-зависимое меню автофигуры “Турагенство”
l в появившемся меню выберите команду “Назначить макрос”
l в окне “Назначить макрос объекту” выберите имя макрос “Турагенство” и подтвердите выполнение операции, нажав на кнопку ОК.
l снимите выделение с кнопки и проверьте ее работоспособность, щелкнув по ней.
2. Создайте и оживите оставшиеся кнопки пользовательского интерфейса.
IV этап Решение задачи на листе “Турагенство”
Сформируйте и заполните накопительную ведомость по продаже путевок туристической фирмой "Пять континентов" за май 2003 г.
Фирма имеет семь постоянных маршрутов. Цена каждого маршрута и количество проданных путевок представлены в таблице. Если количество проданных путевок в месяц по каждому из маршрутов более 50, то путевки, проданные сверх этих пятидесяти, реализуются со скидкой в 15% от указанной цены.
Рассчитайте по формулам стоимость всех проданных путевок; количество проданных путевок со скидкой; для путевок, проданных со скидкой, рассчитайте размер скидки в евро и итоговую выручку по каждому туру.
Подведите итог за месяц по всем графам таблицы: количество проданных путевок фирмой за месяц, стоимость всех проданных путевок без учета скидки, общая сумма скидки, итоговая выручка за месяц по туристической фирме. Расчеты производите в евро.
Определите максимальное количество путевок, проданных со скидкой.
Определите минимальную стоимость тура.
Рассчитайте среднюю скидку за проданные путевки.
Продажа путевок туристической фирмой
"Пять континентов" за декабрь 2003 г.
1. Круговую диаграмму по графе "Количество проданных путевок".
2. Гистограмму по графе "Итоговая выручка".
1. Процент скидки (15%) и пограничное количество путевок (50) вынесите в отдельные ячейки с комментариями.
2. При расчете количества путевок, проданных со скидкой, используйте логическую функцию ЕСЛИ.
3. Создайте макросы для расчета максимального, минимального и среднего значений. Нарисуйте автофигуры. Привяжите созданные макросы к этим автофигурам. А также создайте еще один дополнительный макрос и кнопку для очистки ячеек с результатами вычислений этих значений.
4. На листе “Турагенство” создайте кнопку для перехода на лист “Меню”.
5. Создайте копию листа “Турагенство”. Переименуйте лист в “Формулы” и выведите в созданной таблице формулы расчета.
Образец выполненной работы представлен на рис. 5. Работу выполнила ученица Ломоносовской школы 10 класса “В” Дубровская Ксения.
Рис. 5. Выполненная работа
Проверка выполненного задания
При проверке выполненного задания учащиеся должны представить:
1. Таблицу со значениями.
2. Таблицу с формулами (рис.6). Уметь объяснить работу формулы ЕСЛИ и применение абсолютной адресации в формулах.
Рис. 6. Выполненная работа с формулами
3. Показать текст макросов в редакторе VBA, созданных при нахождении статистических показателей.
Sub Средняя_цена()
Range("C14").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-11]C[3]:R[-5]C[3])"
End Sub
Sub Максимум ()
Range("A14").Select
ActiveCell.FormulaR1C1 = "=MAX(R[-11]C[4]:R[-5]C[4])"
End Sub
Sub Минимум()
Range("B14").Select
ActiveCell.FormulaR1C1 = "=MIN(R[-11]C:R[-5]C)"
End Sub
Sub Очистка()
Range("A14:C14").Select
Selection.ClearContents
End Sub
4. Уметь объяснить адресацию ячеек в Excel. Для ссылок на ячейки используются два формата. Формат А1 (ссылка состоит из имени строки и номера столбца). Формат R1C1 – этот формат мы видим в созданных макросах при нахождении среднего значения, максимума и минимума. В формате R1C1, после буквы “R” указывается номер строки ячейки, после буквы “С” - номер столбца. Например, абсолютная ссылка R1C1 эквивалента абсолютной ссылке $A$1 для формата А1. Для задания относительной ссылки указывается смещение по отношению к активной ячейке. Смещение указывается в квадратных скобках. Знак указывает направление смещения. Например, R[-11]C:R[-5]C) (фрагмент адресации взят из нашего макроса Минимум). Активной ячейкой в этом макросе является ячейка B14. R[-11]C – обозначает относительную ссылку на ячейку, расположенную на 11 строк выше в том же столбце, т. е. ячейку B3. R[-5]C) - обозначает относительную ссылку на ячейку, расположенную на 5 строк выше в том же столбце, т. е. ячейку B9. Таким образом, формируется диапазон В3:В9 для нахождения минимального значения.
На остальных листах также должны быть выполнены аналогичные задания. Условия задания в электронной таблице подбираются созвучно именам листов в созданной книге.
l реализация книг издательствами холдинга "Спутник" по кварталам за 2003 год и т.д.;
Этот материал можно использовать на факультативных занятиях, в классах с углубленным изучением информационных технологий, для выполнения проектов и курсовых работ.
Темой для проекта можно выбрать создание информационной системы “Торгово-закупочное предприятие”, в котором применение макросов необходимо, также как и написание программ на языке VBA. На рис.7 показан пользовательский интерфейс для названного проекта.
Узнайте о соображениях программирования для единого интерфейса документов в Excel.
Сравнение одно- и нескольких интерфейсов документов в Excel 2010 и Excel 2013 г.
Новой функцией Excel 2013 г. является единый интерфейс документа (SDI). SDI — это метод организации приложений графического пользовательского интерфейса (пользовательского интерфейса) в отдельные окна, которые диспетчер окон операционной системы обрабатывает отдельно. В Excel 2013 г. каждое окно Excel может содержать только одну книгу, и каждый из них имеет собственный пользовательский интерфейс ленты (см. рис. 1). По умолчанию при открывании новой книги она будет отображаться в другом окне Excel, несмотря на то, что Excel экземпляр.
Рис. 1. Интерфейс единого документа Excel 2013 г.
Это контрастирует с нескольким интерфейсом документа (MDI), в котором одно родительское окно используется для нескольких вложенных детских окон, при этом только родительское окно имеет меню или панели инструментов. В Excel 2010 г. каждая книга в одном экземпляре Excel использует общий пользовательский интерфейс ленты (см. рис. 2).
Рис. 2. Несколько интерфейсов документов Excel 2010 г.
Excel 2010 г. используется MDI, что означает, что существует одно окно на уровне приложений, в котором находятся все книги, открытые в определенном экземпляре Excel. Окна книги можно расположить в окне Excel, все они делятся одним и тем же пользовательским интерфейсом Ribbon. SDI в Excel означает, что каждая книга будет иметь собственное окно приложения верхнего уровня и имеет собственный соответствующий пользовательский интерфейс Ribbon.
В Excel не существует параметра совместимости MDI.
В системах с двойным монитором SDI в Excel позволяет сравнивать две книги, перетаскив каждую книгу на другой монитор. Каждая книга работает независимо от другой.
Чтобы увидеть SDI и MDI в действии, если у вас есть Excel 2010 и Excel 2013 г., выполните следующие действия.
Контраст между количеством процессов для интерфейсов MDI и SDI
- На Windows меню начните Excel 2010.
- Запустите второе появление Excel. Убедитесь, что Excel отображаются два окна.
- На панели Windows задач выберите и выберите диспетчер задач start.
- Выберите вкладку Processes и прокрутите вниз, пока не увидите Excel.exeзаписей . Это говорит о том, что по умолчанию Excel каждый раз открывается новый экземпляр (два Excel экземпляров).
- Закрой два экземпляра Excel.
- В Windows меню выберите Excel 2013.
- Запустите второе появление Excel. Убедитесь, что Excel отображаются два окна.
- Снова запустите диспетчер задач.
- На вкладке Processes прокрутите вниз, пока не увидитеExcel.exe. Следует помнить, что, хотя вы открыли два Excel, эти две книги содержатся в одном экземпляре Excel.
Чтобы узнать, как SDI и MDI работают в экземпляре Excel, выполните следующие действия.
Сравнение количества экземпляров Excel интерфейсов MDI и SDI
Вы можете открыть несколько экземпляров Excel с помощью следующего переключателя командной строки: excel.exe /x. Этот переключатель Excel в новом процессе.
В этой статье мы обсудим реализацию SDI в пользовательском интерфейсе Excel, как она влияет на программируемость в Excel.
Изменения в пользовательском интерфейсе
Если внимательно приглядеться после открытия книги Excel, вы больше не увидите кнопки состояния окна ( минимизируют , максимизируют и восстанавливают ) в верхнем правом углу ленты. На рисунке 3 показаны кнопки состояния окна, доступные в Excel и Excel 2007 г. Так как окно верхнего уровня теперь привязано непосредственно к одной книге или представлению книги, больше нет необходимости в пользовательском интерфейсе управления windows в Excel.
Рис. 3. Windows пользовательского интерфейса Excel 2010 г.
Кроме того, начиная с Excel, в одном окне экземпляра Excel, например на рисунке 4, больше не существует нескольких окон книг.
Рис. 4. Несколько книг в одном окне Excel экземпляра
Пересчет и формулы
Пересчеты в Excel по-прежнему будут "глобальными", что означает, что они происходят в книгах в одном экземпляре Excel. Формулы, которые ссылаются на книги, открытые в одном экземпляре Excel, будут участвовать в расчетах вместе и будут делиться одним и тем же режимом вычисления книг (автоматическим, автоматическим, за исключением таблиц данных и вручную).
В MDI для обработки всех открытых книг в этом экземпляре Excel. В SDI существует одна формула-планка на одну книгу. Для SDI при редактировании перекрестных ссылок в формуле, как исходные, так и целевые бары формулы книги покажут формулу, которая в настоящее время редактирована, как показано на рисунке 5.
Рис. 5. Обновление формул перекрестных книг
Настраиваемые области задач
Настраиваемые области задач, присоединенные к окну верхнего уровня в MDI, теперь присоединены к окну конкретной книги в SDI. Переход на другую книгу активирует окно книги, которое не обязательно будет иметь настраиваемую области задач, если код разработчика не обновляется, чтобы специально отображать настраиваемую области задач для этой книги.
Резюмировать, как разработчик, необходимо:
- Убедитесь, что для любых книг, в которых необходимо показать настраиваемую области задач, необходимо написать код, чтобы явно это сделать.
- Убедитесь, что вы явно обрабатываете обновление настраиваемого состояния области задач во всех экземплярах, если вы хотите, чтобы все настраиваемые области задач отражали одно и то же состояние. Например, пользователь переимехал на поле ON, и вы хотите, чтобы он отражался во всех настраиваемой области задач во всех Excel.
Настраиваемые ленты
Пользовательские вкладки ленты и элементы управления, предполагаемые единым пользовательским интерфейсом ленты на экземпляр приложения в предыдущих версиях Excel теперь будут распространяться на каждую ленту книги в Excel. Если в MDI разработчику настраиваемой ленты не нужно было рассматривать несколько экземпляров элементов управления в разных экземплярах пользовательского интерфейса Excel ленты, то в SDI им потребуется учитывать эту ситуацию.
Если вы хотите сохранить все элементы управления пользовательским интерфейсом ленты в одном состоянии в открытых книгах, необходимо:
- Убедитесь, что код может проходить цикл через окна книг и обновлять состояние элементов управления.
- Кэшировать состояние элементов управления, чтобы при переходе пользователя на другую книгу это событие можно было зафиксировать и обновить элементы управления в качестве части переключателя окна.
Соображения для кода VBA
С переходом на SDI все методы, события и свойства на уровне Excel на уровне Excel остаются без изменений и работают так, как в предыдущих версиях Excel (например, Application.ActiveWindow , и Application.Windows так далее).
В Excel году все методы, события и свойства окон на уровне книг теперь работают в окне верхнего уровня (например, Workbook.WindowActivate событие по-прежнему запускается при переходе на конкретную книгу, Workbook.Resize событие по-прежнему запускается при повторном размере этой книги, ThisWorkbook.Windows(1).Height и , ThisWorkbook.Windows(1).Width , , ThisWorkbook.Windows(1).Left и ThisWorkbook.Windows(1).Right``ThisWorkbook.Windows(1).Minimize``ThisWorkbook.Windows(1).Maximize так далее будет работать на окне верхнего уровня для активной книги).
Специальные случаи перечислены в следующей таблице.
Таблица 1. Поведение объектной модели с SDI
Application.Visible становится false
Настройка Application.Visible to True отображает все скрытые окна
Открытие документа через оболочку только показывает, что окно и Application.Visible теперь true
Application.Visible = False скрывает все, а Application.Visible = True отображает все, игнорируя все параметры уровня документов.
Если все окна скрыты с помощью параметра уровня окна, параметр на уровне приложения также перегно-
Отображение хотя бы одного окна означает, что параметр уровня приложения true
В пользовательском коде не требуется никаких изменений, чтобы команды XLM продолжили работать так, как ожидалось в SDI Excel.
Deprecating Protect Workbook Windows
В SDI каждая книга имеет свое окно верхнего уровня, которое можно восстановить, свести к минимуму и закрыть. Чтобы свести к минимуму путаницу, с которой вы можете столкнуться при неумении перемещаться, повторно или закрывать это окно верхнего уровня, параметр Windows в функции Protect Workbook в Excel больше не доступен (см. рис. 6). Далее в таблице 2 описано это действие.
Рис. 6. Windows диалоговое окно Protect Workbook отключено
Действие | Поведение |
---|---|
Откройте книгу, созданную в более ранней версии Excel с включенной защитой окна | Excel распознает расположение окна и атрибуты размера, но не помешает пользователю организовать или закрыть эти окна. |
Просмотр диалогового окна Protect Structure и Windows | Excel диалоговое окно, но с отключенным Windows параметром. |
Решения проблем SDI
В следующем разделе предусмотрены обходные пути для проблем, с которыми вы можете столкнуться при использовании SDI.
Книга не может быть закрыта, щелкнув красную кнопку "X" Close , когда эта книга будет программным образом открыта с помощью модальной формы пользователя. Чтобы решить эту проблему, предлагается добавить следующий код в процедуру события макета формы пользователя, а затем открыть форму пользователя как неохожную.
Другим вариантом является открытие окна книги, активация любого другого окна и повторное активация окна книги. Теперь вы можете закрыть книгу с помощью кнопки Закрыть .
Предположим, что код VBA открывает несколько книг и использует свойство DataEntryMode для управления записью данных и закрытием книг. В модели Excel SDI, так как каждая книга содержится в своем процессе, свойство DataEntryMode, используемая в одной книге, не распознает существование другой книги и, следовательно, практически не влияет на их взаимодействие. Для решения этой проблемы существует несколько вариантов. Дополнительные книги или таблицы можно скрыть с помощью или Window.Visible = False Sheet.Visible = False , соответственно, с помощью. Обнаружение и отмена любых событий закрытия с помощью Workbook.BeforeClose(Cancel) = True .
Панели инструментов, добавленные в Excel с помощью командного штрих-кода и XLA-файлов, будут отображаться только после закрытия и открытия книги. Использование командных полос для настройки пользовательского интерфейса было обесценилось начиная с Excel 2007 года. Оптимальным решением является настройка пользовательского интерфейса ленты с помощью XML-файлов, как подробно описано в статье Customizing the 2007 Office Fluent Ribbon for Developers.
Другим вариантом является Application.Windows использование события на уровне приложений для обнаружения открытия новых книг, а затем использование вместо книг для добавления управления лентой. Ниже приводится пример кода, который можно использовать для этого.
Следующий код затем будет использоваться для удаления панели инструментов перед закрытием книги.
Сводка
Новый интерфейс единого документа Excel 2013 г. упрощает работу с несколькими книгами. Вы даже можете перетаскивать книги на различные мониторы для удобства. Просто необходимо помнить, что в книге имеется только одно окно верхнего уровня и одно меню пользовательского интерфейса ленты. Для этого может потребоваться обновить существующий код, чтобы кэшировать состояние элементов управления и параметров при переходе из книги в книгу.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Читайте также: