Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс1.doc
Скачиваний:
10
Добавлен:
20.09.2019
Размер:
1.4 Mб
Скачать

Запись макроса

В меню Сервис выберите подменю Макрос и выберите команду Запись.

Введите имя для макроса в соответствующее поле.

Первым символом имени макроса должна быть буква. Остальные символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не допускаются пробелы; в качестве разделителей слов следует использовать знаки подчеркивания.

Чтобы выполнить макрос с клавиатуры с помощью сочетания клавиш, введите соответствующую букву в поле Сочетание клавиш. Для строчных букв используется сочетание CTRL+ буква, а для заглавных — CTRL+SHIFT+ буква, где буква — любая клавиша на клавиатуре. Буква, используемая в сочетании клавиш, не может быть цифрой или специальным символом. Заданное сочетание клавиш будет заменять любое установленное по умолчанию в Microsoft Excel, пока книга, содержащая данный макрос, открыта.

В поле «Сохранить» в книге выберите книгу, в которой должен быть сохранен макрос. Нажмите кнопку OK.

Выполните макрокоманды, которые нужно записать.

Пример макроса:

ActiveSheet.ShowAllData

Range("A1").Select

Range("A1:D8"). Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= xlTopToBottom, DataOption1:=xlSortNormal

Нажмите кнопку «Остановить запись» на соответствующей панели инструментов.

Выполнение макроса в Microsoft Excel

1) Откройте книгу , которая содержит макрос.

2) В меню Сервис установите указатель на пункт Макрос и выберите команду Макросы.

3) В поле Имя макроса введите имя того макроса, который нужно выполнить.

4) Нажмите кнопку Выполнить. Для того чтобы упростить эти действия можно назначить выполнение макроса кнопку или сочетание клавиш.

3. 3 Управление данными с помощью объекта UserForm Общие сведения

Объект UserForm представляет собой окно или диалоговое окно, являющееся составной частью интерфейса пользователя в приложении.

Формы пользователя имеют свойства, определяющие внешний вид, как например, положение, размер, цвет и реакция на события.

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

Помимо свойств и событий для программной обработки форм пользователя могут использоваться методы. Например, можно использовать метод Move для изменения положения и размера формы UserForm.

При конструировании форм пользователя следует задать свойство BorderStyle для определения границ и свойство Caption для занесения текста в область заголовка. В программе можно использовать методы Show и Hide, чтобы делать форму соответственно видимой и невидимой во время выполнения.

3. 3. 1 Добавление данных в таблицы

Добавление в таблицы происходит с помощью специальных форм, которые содержат поля, предназначенные для ввода в них соответствующей информации. После ввода необходимо нажать кнопку «Добавить», запуститься процедура, который вносит в таблицу данные из полей формы.

Данные процедуры работают на основе цикла

Do While Not IsEmpty(текущая)<>''''

Set следующая = текущая.Offset(1, 0)

…………………………

Set текущая = следующая

Loop,

который работает пока не дойдет до первой пустой ячейки. При этом используются переменные объектного типа, которые используются как следующая и текущая ячейки. Метод OFFSET(i,j) используется для указания на ячейку, отдаленной на i –столбцов и на j - строк относительно данной ячейки.

В теле цикла стоит оператор развилки IF…Then… Else… EndIF, который проверяет, нет ли такого же ключа в данной таблице (ключ – уникальное значение для строки, которое однозначно определяет строку).

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

Для примера рассмотрим форму для добавления в таблицу «Регистрация поступлений».

Пример:

П ерейдите в редактор Visual Basic (Alt+F11) и постройте форму следующего вида (при создании используется элемент управления Page – что позволяет создать две вкладки «Добавить» и «Удалить».

В этой форме использованы такие элемнеты как Label, TextBox, CommandButton, ComboBox.

На рисунке показано расположение и количество всех необходимых элементов управления.

Сделаем двойной щелчок на кнопке «Добавить» - попадаем в программу в которой начальная и конечная процедуры уже созданы.

Вводим следующий программный код для кнопки «Добавить»:

Private Sub CommandButton1_Click()

Dim Y As Byte

If TextBox1 = " " Or TextBox2 = " " Or TextBox3 = " " Or TextBox4 = " " Or TextBox5 = " " Then

MsgBox ("Введите все данные!"), vbExclamation, "Ошибка"

Exit Sub

End If

If Not IsNumeric(TextBox1.Text) Then

Msg = MsgBox("Вводить надо числовые данные", vbCritical)

Exit Sub

End If

If Not IsNumeric(TextBox3.Text) Then

Msg = MsgBox("Вводить надо числовые данные ", vbCritical)

Exit Sub

End If

If Not IsNumeric(TextBox4.Text) Then

Msg = MsgBox("Вводить надо числовые данные ", vbCritical)

Exit Sub

End If

If Not IsNumeric(TextBox5.Text) Then

Msg = MsgBox("Вводить надо числовые данные ", vbCritical)

Exit Sub

End If

Dim name As String, simvol As String

Dim pr As Object, X As Object

Dim Наименование As String

Dim Цена As Integer, Возраст As Integer, Символ As Integer, Количесвто As Integer

ActiveWorkbook.Sheets(«Регистрация поступлений").Activate

simvol = TextBox1

Set pr = ActiveSheet.Range("a1")

Do While Not IsEmpty(pr)

Set X = pr.Offset(1, 0)

If pr = simvol Then

Y = MsgBox("Добавление невозможно т.к. введенный код уже существует", vbOKCancel, "Код")

If Y = vbCancel Then GoTo e Else GoTo 12

End If

Set pr = X

Loop

ActiveWorkbook.Sheets("Регистрация поступлений ").Activate

name = TextBox2

Set pr = ActiveSheet.Range("b2")

Do While Not IsEmpty(pr)

Set X = pr.Offset(1, 0)

If pr = name Then

Y = MsgBox("такой товар уже есть в списке внести под другим кодом?", vbYesNo + vbQuestion, "Товар")

If Y = vbYes Or Y = vbNo Then GoTo 5 Else GoTo 12

End If

Set pr = X

Loop

5 Символ= TextBox1

Название = TextBox2

Возраст = TextBox3

Цена = TextBox4

Количесвто= TextBox5

ActiveWorkbook.Sheets("Регистрация поступлений ").Activate

Range("a3").Select

Selection.EntireRow.Insert

Set pr = ActiveSheet.Range("a2")

Do While Not IsEmpty(pr)

Set X = pr.Offset(1, 0)

Set pr = X

Loop

pr = Символ

pr.Offset(0, 1) = название

pr.Offset(0, 2) = возраст

pr.Offset(0, 3) = цена

pr.Offset(0, 4)= количество

Set pr = Nothing

Set X = Nothing

Selection.Sort key1:= Range("a1"), order1:= xlAscending, Header:= xlGuess, OrderCustom:= 1, MatchCase:= False, Orientation:= xlTopToBottom

TextBox1.Text = ""

TextBox2.Text = ""

TextBox3.Text = ""

TextBox4.Text = ""

TextBox5.Text = ""

12 UserForm1.Hide

e: End Sub

Д алее вводим тексты программ для кнопки «Отмена», «Удалить» и т.п. (полный текст программ приводится в Приложении).

По окончании данных операций создаем на рабочем листе кнопку и присваиваем ей значение

UserForm1.Show

При нажатии выводится форма для редактирования данных (показана на рисунке).