Перейдем к следующему примеру — необходимо разработать несложную игру. На рабочем листе (рис. 1.42) следует разместить пять окон для изображений (элементы управления типа «Изображение»). При этом два окна будут основными — расположены слева и большие по размеру.
Другие три окна имеют меньшие размеры и расположены в правой части рабочего листа (они будут содержать эталонные изображения). Также на рис. 1.42 расположены две кнопки и две надписи, при этом надпись Результат является просто поясняющей, и далее мы ее упоминать не будем.
Теперь смысл игры. Предварительно в три маленьких окна в правой части листа выводятся три различные картинки (условно их можно называть эталонными). При щелчке на кнопке Бросок в каждое из двух основных окон для изображений должна попадать (случайным образом) одна из трех возможных картинок (из набора эталонных, которые видны на экране). Если в результате такого случайного выбора картинки в обоих основных окнах совпадают, то в элемент управления «Надпись» для результата добавляется 3 балла, а если нет, то вычитается 1 балл.
СОЗДАЛ ИГРУ В БЛОКНОТЕ
Рис. 1.42. Интерфейс разрабатываемой игры
Нам также потребуется датчик случайных чисел — здесь мы воспользуемся уже знакомой функцией Rnd. На первом этапе необходимо дать имена объектам в соответствии с табл. 1.2. Назначение элементов достаточно очевидно. Нескольких слов заслуживает элемент «Надпись» Res для отображения результата.
В ней вычисляется суммарный результат по итогам серии произведенных бросков. А по щелчку на кнопке Начать игру снова значение результата обнуляется. Таким образом, вступительная часть перед программированием завершена, и поэтому перейдем к описанию программного кода.
Для того чтобы между сеансами работы на компьютере текущий результат сохранялся, отведем для него ячейку в первой строке на листе — М1. В начале в нее необходимо записать ноль. После каждого броска в эту ячейку программно будет записываться результат. В этом случае при сохранении книги предыдущий результат сохраняется в ячейке М1. Процедура, выполняемая при открытии книги, должна извлечь из ячейки М1 предыдущий результат, и тогда пользователь будет иметь возможность продолжить игру.
В качестве первого программного фрагмента оформим процедуру, выполняемую при открытии книги, так, как представлено в листинге 1.26. Здесь в надпись для результата подставляется содержимое ячейки М1 с первого листа книги.
1 2 3 4
‘ Листинг 1.26. Процедура, выполняемая при открытии книги Private Sub Workbook_Open() Worksheets(1).Res.Caption = Worksheets(1).Range(«M1»).Value End Sub
‘ Листинг 1.26. Процедура, выполняемая при открытии книги Private Sub Workbook_Open() Worksheets(1).Res.Caption = Worksheets(1).Range(«M1»).Value End Sub
Таблица 1.2. Имена объектов на рис. 1.42
Image1 | Изображение | Левое основное окно для изображения |
Image2 | Изображение | Правое основное окно для изображения |
ImageEtalon1 | Изображение | Левое окно для образца |
ImageEtalon2 | Изображение | Среднее окно для образца |
ImageEtalon3 | Изображение | Правое окно для образца |
Label1 | Надпись | Подпись «Результат» |
Res | Надпись | Для отображения результата |
Brosok | Надпись | Для выполнения броска |
NewGame | Надпись | Начать игру снова |
В листинге 1.27 приведена основная процедура, выполняемая по щелчку на кнопке с надписью Бросок.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
‘ Листинг 1.27. Обработка щелчка на кнопке Бросок Private Sub Brosok_Click() Symma = Range(«M1») Randomize ‘ Формирование случайных чисел a = CInt(Rnd * 3 + 0.5) b = CInt(Rnd * 3 + 0.5) ‘ Отображение картинки в первом окне If a = 1 Then Image1.Picture = ImageEtalon1.Picture ElseIf a = 2 Then Image1.Picture = ImageEtalon2.Picture Else Image1.Picture = ImageEtalon3.Picture End If ‘ Отображение картинки во втором окне If b = 1 Then Image2.Picture = ImageEtalon1.Picture ElseIf b = 2 Then Image2.Picture = ImageEtalon2.Picture Else Image2.Picture = ImageEtalon3.Picture End If ‘ Формирование результата If a = b Then Symma = Symma + 3 Else Symma = Symma — 1 End If ‘ Фиксирование результата в надписи и в ячейке на листе Res.Caption = Symma Range(«M1»).Value = Symma End Sub
‘ Листинг 1.27. Обработка щелчка на кнопке Бросок Private Sub Brosok_Click() Symma = Range(«M1») Randomize ‘ Формирование случайных чисел a = CInt(Rnd * 3 + 0.5) b = CInt(Rnd * 3 + 0.5) ‘ Отображение картинки в первом окне If a = 1 Then Image1.Picture = ImageEtalon1.Picture ElseIf a = 2 Then Image1.Picture = ImageEtalon2.Picture Else Image1.Picture = ImageEtalon3.Picture End If ‘ Отображение картинки во втором окне If b = 1 Then Image2.Picture = ImageEtalon1.Picture ElseIf b = 2 Then Image2.Picture = ImageEtalon2.Picture Else Image2.Picture = ImageEtalon3.Picture End If ‘ Формирование результата If a = b Then Symma = Symma + 3 Else Symma = Symma — 1 End If ‘ Фиксирование результата в надписи и в ячейке на листе Res.Caption = Symma Range(«M1»).Value = Symma End Sub
В тексте процедуры используется функция Rnd, которая нам уже встречалась. Преобразование CInt (Rnd * 3 + 0.5) позволяет сформировать случайное целое число, которое может принимать одно из трех возможных значений: 1, 2 или 3. Таким образом, можно значения переменных а и b сопоставить с номерами картинок. В результате при совпадении картинок мы увеличиваем сумму выигрыша на 3 балла, а при несовпадении, соответственно, уменьшаем на один.
Если не предпринимать каких-либо действий, то функция Rnd при каждом повторном открытии книги выдает одну и ту же последовательность случайных чисел. Чтобы устранить данный недостаток, мы воспользовались функцией Randomize, которая выполняет перемешивание случайных чисел. В результате при различных сеансах работы последовательность, выдаваемая по нажатию кнопки Бросок, каждый раз будет разная.
Другая кнопка на листе (NewGame) позволяет сбросить содержимое ячейки М1 и значение свойства Caption элемента Res в ноль для начала новой игры (листинг 1.28).
1 2 3 4 5 6
‘ Листинг 1.28. Процедура сброса суммы баллов в ноль Private Sub NewGame_Click() Symma = О Res.Caption = Symma Range(«M1») = Symma End Sub
‘ Листинг 1.28. Процедура сброса суммы баллов в ноль Private Sub NewGame_Click() Symma = О Res.Caption = Symma Range(«M1») = Symma End Sub
Один из вариантов развития игры показан на рис. 1.43.
Рис. 1.43. Один из сценариев развития игры
Источник: excelexpert.ru
Как в excel создать программу?
Надежда говорит:
Пакет программ «Microsoft Office» состоит из приложений, которые не только содержат в себе огромное количество инструментов для упрощения работы с данными, но и дают возможность пользователю самому задавать определенные параметры и внедрять, так называемые скрипты в уже готовые приложения. Скрипты – это исполняемые коды или также специальные программы, которые можно внедрить в объекты «Microsoft Office» написав их прямо внутри их системы.
Инструкции
1. Для того, чтобы уметь, к примеру, в «Excel» создать программу вовсе не обязательно ходить на специальные курсы, ниже представлена подробная пошаговая инструкция для решения этой задачи.
2. Основы, позволяющие в «Excel» создать программу с помощью инструмента «Visual Basic»:
Откройте программу «Microsoft Office Excel».
На панели инструментов выбрать вкладку «Сервис» и открыть ее меню. Из меню выбрать «Макрос» и далее пункт «Visual Basic»
3. При необходимости можно создать формы. Для этого выбрать пункт «Insert» и далее «UserForm». Так будет создана форма. Для того, чтобы добавить элементы управления в окно формы, их нужно перетащить мышью из панели «Toolbox». Сохранить форму можно сочетанием клавиш «Ctrl+S»
4. Для создания модулей необходимо выбрать в главном меню вкладку «Insert», а в нем либо пункт под названием «Module» либо или «Class Module».
Чтобы добавить в модули классов декларации определенных классов нужно определить их при помощи ключевого слова «Class»
5. Теперь можно добавить методы в определения классов и заготовки процедур и функций в модули. Для объявления функций используется ключевое слово «Function». Далее в скобках указываются имя и параметры.
Использование предложения «Dim…As», позволит объявить переменные (глобальные и локальные), а также члены классов. Декларируйте массив, указывая его размерность в скобках
6. Для реализации алгоритма работы созданной программы вносите необходимые изменения в коды функций, процедуры, методы классов. Структуры управления «Visual Basic» дают возможность ручного контроля потока исполнения
7. В соответствии с поставленными задачами изменяйте написанные программы с помощью инструментов «Visual Basic»
Похожие вопросы
Источник: questione.ru
Создаём макросы в программе MS Excel
С помощью макросов офисного пакета Microsoft вы можете значительно ускорите работу с документами. Сам макрос это по сути специальный код, в котором записаны повторяющиеся действия. Их вы можете автоматизировать, с помощью применения макроса. В Excel тоже встроены макросы, которые вы можете редактировать, а также добавлять свои. Давайте рассмотрим в данной статье, как это делается на примере пошаговых инструкций.
Как создать макрос в Excel
Всего можно задать макрос двумя способами:
- Автоматически;
- Вручную.
Автоматическая запись макросов подойдет для всех пользователь, даже для тех, кто не умеет работать с кодом. В этом случае просто идет записывание определенных действий в программе Excel, которые вы выполняете в данный момент времени. Таким образом можно создать примитивный макрос, однако, как вы понимаете, его применение на практике будет весьма ограничено.
В случае с ручной записью макросов вам потребуются знание специальных языков программирования. так как код придется набирать вручную. Но, несмотря на то, что этот способ кажется сложнее, он может быть применим во многих ситуациях. Из-за его сложности мы не будет рассматривать данный способ в нашей статье, а поговорим о том, как можно сделать автоматический макрос, а также запустить его выполнение.
Включение автоматической записи макросов
Перед тем, как начать работу с макросами в программе Excel вам потребуется выполнить их включение. У нас уже есть подробная статья по этой теме, и вы можете прочитать её по представленной ссылке.
Здесь же будет предоставлена только краткая инструкция по их включению:
- Откройте табличный редактор MS Excel и нажмите на кнопку «Файл», что расположена в верхней части окна.
- Здесь, в левом меню, выберите пункт «Параметры».
Итак, вы подключили макросы, но ничего не произошло, так как их ещё никто не записал, а новых из сторонних источников вы не добавляли. В этой статье мы не будем рассматривать, как записать макрос, используя программный код. Вместо этого посмотрим, как сделать так, чтобы программа сама составляла макросы, исходя из ваших действий. Эта инструкция будет понятна и выполнима для всех пользователей, вне зависимости от их уровня владения компьютером и Excel.
- Снова перейдите во вкладку «Разработчик», которая должна была появится после выполнения предыдущей инструкции.
- Здесь нажмите на кнопку «Запись макроса». Она расположена в блоке «Код» и в некоторых версиях может быть без подписи, поэтому смотрите её расположение на скриншоте ниже. Оно не меняется в зависимости от версии продукта.
После этого включится автоматическая запись действий для встроенного в программу макроса. Будут записываться все ваши действия в программе до тех пор, пока вы не остановите запись. Давайте для примера создадим макрос, который будет при запуске складывать содержимое нескольких ячеек. В нашем случае формула для макроса будет выглядеть так: =C4+C5+C6.
На нашем сайте есть вводная статья по работе с формулами в Excel. Если вы сейчас плохо понимаете, о чём идёт речь, то рекомендуем ознакомиться с данным материалом по ссылке.
Давайте запишем наш первый макрос:
- Выделите ячейку, в которой будет записана формула.
- Пропишите формулу. В данном случае это формула вида a+b+c. Вместо букв потребуется вставить номера ячеек. Вид формулы можете посмотреть выше или перейти по ссылке с отдельной статьёй. Помните, что ячейки, которые вы указываете в формуле, не должны быть пустыми. В противном случае вместо решения вы получите ошибку.
- Макрос записал ваше действие с формулой. Нажмите Enter, чтобы она посчиталась.
Запускаем макрос
Вы записали макрос, который при выполнении операции будет считать содержимое нескольких ячеек по заданной формуле. Однако, чтобы он работал, вам потребуется выполнить его запуск:
-
Снова откройте вкладку «Разработчик» и там найдите большую кнопку «Макросы». Она расположена в блоке «Код». Также вы можете воспользоваться сочетанием клавиш Alt+F8.
Если при создании макроса вы задавали ему комбинацию горячих клавиш для вызова, то можете использовать её. В таком случае вам не придётся проделывать тех действий, что описаны в инструкции выше.
После запуска макрос должен будет задать данные ячейкам и сложить их между собой, как вы это делали при записи.
Редактируем макрос
Записанные макросы, а также те, которые вы скачали с других источников, можно редактировать с помощью встроенных инструментов. Однако для этого вам потребуется знание кода, на котором написан макрос. В качестве примера мы рассмотрим, как его отредактировать, а также ознакомимся с азами требуемого синтаксиса:
-
Перейдите во вкладку «Разработчик», а затем откройте «Макросы» или воспользуйтесь комбинацией клавиш Alt+F8.
- Sub – это команда отвечающая за начало записи макроса. Она обязательно стоит в самом начале, затем идёт наименование макроса, которое задал пользователь, а затем сам код макроса;
- End Sub. Стоит в самом конце кода. Отвечает за остановку записи, следовательно, и выполнения макроса;
- Range(«…»).Select. Это оператор, отвечающий за выбор ячейки. Например, команда Range(«A1»).Select выберет ячейку с идентификатором A1;
- ActiveCell.FormulaR1C1. Отвечает за работу с формулами, которые используются при записи макроса. Также может быть использовано для других расчётов.
В итоге у вас должно получится, что в формулу добавится ещё одна ячейка, а в ней будет число 1158 или любое, которое вы зададите. При выполнении макроса вы получите указанные ячейки заполненными, а формулу посчитанной.
Во время работы с большими макросами вы можете столкнуться с тем, что его выполнение занимает много времени, а также потребляет значительную часть ресурсов машины. Обычно, данная проблема больше актуальна для старых компьютеров. Если вы хотите ускорить процесс выполнения, то в код придётся добавить команду Application.ScreenUpdating = False.
Она отвечает за выполнение обновления экрана во время вычислительных действий. Если у неё после равно стоит значение «False», то обновление экрана после каждого действия макроса будет отключено, что позволит значительно сократить потребление вычислительных ресурсов компьютера. В конце вы только увидите результат вычисления.
Для возобновления обновления экрана после выполнения каждой задачи следует прописать команду Application.ScreenUpdating = True.
Также для оптимизации работы макросов в Excel можно воспользоваться командой Application.Calculation = xlCalculationManual, которая ставится в начальной позиции кода (примерное расположение отмечено на скриншоте). В конце кода вам нужно будет написать команду Application.Calculation = xlCalculationAutomatic. Первая команда отключит автоматический пересчёт результата после каждого изменения в ячейках, а вторая наоборот, включит его, но только уже после выполнения основной части макроса. Благодаря этому Excel будет считать результат только один раз, а не после каждого выполненного действия, что значительно сэкономит время и ресурсы. Правда, иногда подобного рода команды могут исказить результат подсчёта, поэтому в определённых условиях от использования этой команды приходится отказаться.
Создание макроса с чистого листа
Этот вариант подойдёт только для продвинутых пользователей, которые хорошо знакомы с языком Basic, так как на нём пишутся все макросы. Программа позволяет не только редактировать макрос в специальном редакторе, но и писать его с нуля в таком же редакторе.
- Перейдите во вкладку «Разработчик» и нажмите там на кнопку «Visual Basic».
- Откроется среда разработки, в которую вам и нужно будет прописывать код. Он пишется вручную, но некоторые плагины для офисного пакета Майкрософт могут значительно ускорить написание макросов.
Сами макросы позволяют значительно ускорить процесс работы в Excel и сопутствующих продуктах. В основном они завязана на автоматизации рутинных процессов, которые постоянно повторятся и никак (или почти никак) не меняются. Макросы можно записать без знаний кода и отредактировать/оптимизировать их, если имеются базовые представления о синтаксисе Basic. Если у вас имеются какие-либо вопросы по статье или предложения, то напишите их в комментариях ниже.
Источник: public-pc.com