Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Цифры прописью

Читайте также:
  1. Какие цифры и буквы наносят согласно ДОПОГ на знаки опасности, соответствующие взрывчатым изделиям подкласса 1.6?

Теперь рассмотрим другой пример. Создадим функцию, которая будет определять цифры от 1 до 10 и записывать их прописью.

Для этого в модуле запишем следующий код:

Function Cifra(C As Variant)

Select Case C

Case 1

Cifra = "Один"

Case 2

Cifra = "Два"

Case 3

Cifra = "Три"

Case 4

Cifra = "Четыре"

Case 5

Cifra = "Пять"

Case 6

Cifra = "Шесть"

Case 7

Cifra = "Семь"

Case 8

Cifra = "Восемь"

Case 9

Cifra = "Девять"

Case 10

Cifra = "Десять"

Case Else

Cifra = "Введены некорректные данные"

End Select

End Function

В связи с тем, что пользователь может записать вместо цифры буквы, то описываем переменную С значением Variant. Теперь остаётся только в ячейку В2 записать нашу функцию и всё будет готово.


 

Безусловно всем хотелось отобразить процесс выполнения макроса, сделать вот такой или что-то на подобии Progressbar.

Рассмотрим это на простом примере. Пусть у нас будет некоторый цикл, который будет заполнять ячейки на листе какими-то данными. А прогрессбар будет нам отображать процесс выполнения, тобишь мы сможем проследить сколько осталось времени до конца выполнения макроса.

Создадим форму, которую назовём Progressbar, на неё добавим два объекта - Label1 и Label2.
Label1 закрасим, например, в синий цвет и удалим весь текст из него - это и будет наша шкала, которая будет отображать процесс загрузки. В Label2 напишем Процесс загрузки данных:

Теперь создадим на листе 1 кнопку Загрузить данные, в коде которой будем вызывать созданную нами форму.

Private Sub CommandButton1_Click()

Progressbar.Show

End Sub

Элементы формы Label находятся на панели инструментов Toolbox

Теперь добавим в книгу модуль, в котором будет написан код, процесс выполнения которого мы и будем отслеживать.

Итак, пусть это будет обыкновенный цикл, который ставит ноли в ячейки (в очень много ячеек). Например такой:

Sub Zapolnenie()

Dim a As Byte

Dim b As Byte

For a = 1 To 250

For b = 1 To 250

Worksheets("Лист1").Cells(a, b) = 0

Next b

Next a

End Sub

Теперь наша задача сделать так, чтобы нам появлялась форма и показывала процесс выполнения макроса.

Хочу обратить внимание на то, что я не случайно взял диапазон от 1 до 250.
250 - это ширина Label1 (синего цвета). Т.е. при выполнения выше указанной процедуры значение a будет передаваться на форму и будет отвечать за ширину Label1. Тобишь при увеличении в цикле значения а будет увеличиваться ширина Label1, т.е. она будет показывать процесс выполнения макроса.

Но пока что кнопка Загрузить данные никак не связана с самим циклом. Для этого мы в коде формы должны записать процедуру, которая будет запускать цикл Zapolnenie расположенный на модуле. Т.е. при запуске формы надо как-то активировать форму, для этого используем команду UserForm_Activate в названии макроса.

Теперь при активации формы у нас будет запускаться макрос с названием Zapolnenie

Private Sub UserForm_Activate()

Call Zapolnenie

End Sub

Изменим код на модуле. Добавим несколько строк, которые и будут передавать данные на загрузившуюся форму. Конечный код будет выглядеть так:

Sub Zapolnenie()

Dim a As Byte

Dim b As Byte

For a = 1 To 250

Progressbar.Label1.Width = a

Progressbar.Repaint

For b = 1 To 250

Worksheets("Лист1").Cells(a, b) = 0

Next b

Next a

Worksheets("Лист1").Range("A1:IP250") = ""

Unload Progressbar

End Sub

Как видно из кода мы добавили три строки.

Progressbar.Label1.Width = a - передаёт значение на форму и ширина Label1 изменяется;
Progressbar.Repaint - обновляем форму. Если это упустить, то мы не сможем наблюдать за процессом заполнения;
Unload Progressbar - выгружаем форму после завершения загрузки данных;
Worksheets("Лист1").Range("A1:IP250") = "" - очищаем ячейки от нолей.

Ну вот. Теперь всё работает так как мы хотели. Если кто-то что-то не понял, всегда можно скачать пример и разобраться.
В видеоролике продемонстрировано как это всё работает


 

Заставка приветствия
реализованная на UserForm

· Видеоурок по данной теме

И вот мы сделали программу, которой все пользуются. Но хотелось бы отличиться и приблизить программу к настоящей, полноценной.
Многие замечали, что при открытии большинства программ, нам появляется заставка приветствия (например у Total Commander, AIMP и т.д.). Давайте сделаем подобие, пусть при открытии книги нам на 2 секунды появляется такая вот картинка.

Для этого создадим новый документ, в котором создадим новую форму с именем Zstvk.

Теперь фоном этой формы сделаем нашу картинку. В профиле формы выбираем пункт Picture. И загрузим выбранную картинку. Придаём форме необходимые размеры, пишем в шапке "Приветствие" (строка Caption в профиле).

Чтобы форма появлялась при открытии книги необходимо добавить в книгу макрос, который срабатыват при открытии книги. Производим двойной щелчок мыши по вкладке "Эта книга" и добавляем туда код, который будет вызывать форму.

Private Sub Workbook_Open() Zstvk.Show End Sub

Для того, чтобы форма появлялась на 2 секунды воспользуемся таймером.
Перейдём в код формы и выберем макрос, который срабатывает при активации формы.

Теперь добавим в этот код таймер.

Private Sub UserForm_Activate() Application.OnTime Now + TimeValue("00:00:02"), "Vigruzit" End Sub

Vigruzit - это имя макроса, который сработает через 2 секунды. При помощи этого макроса заставка будет автоматически закрываться. Для этого добавим в книгу новый модуль и создадим в нём вот такой макрос.

Sub Vigruzit() Unload Zstvk End Sub

Ну вот, всё готово. Сохраняем книгу закрываем и открываем. При этом нам появляется созданное окно приветствия.


 

Выпадающий список
ComboBox на UserForm

· Видеоурок по данной теме

Создадим в проекте форму с выподающим списком, в которой будет указан список некоторых сотрудников, которых необходимо "обработать".


Дата добавления: 2015-08-09; просмотров: 79 | Нарушение авторских прав


Читайте в этой же книге: Offset(RowOffset, ColumnOffset) | Выделения относительно активной ячейки | Error. Обработка ошибок | Способ №4. Очистка ошибки |
<== предыдущая страница | следующая страница ==>
Создание собственной функции| Работа с ComboBox

mybiblioteka.su - 2015-2024 год. (0.009 сек.)