Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

VBA по Ефимовой

.pdf
Скачиваний:
83
Добавлен:
11.04.2015
Размер:
1 Мб
Скачать
☆

If bFlagPremia Then

. TypeText vbTab & "- денежной премией в сумме " & nSummaPremii & "

рублей" End If

If bFlagGramota Then

.TypeText ";"

.TypeText vbCrLf

.TypeText vbTab & "- почетной грамотой." Else

.TypeText "." End If

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText vbCrLf

. TypeText "Генеральный директор" & vbTab & vbTab & vbTab & "Иванов И.И."

.ParagraphFormat.Alignment = wdAlignParagraphCenter

.TypeParagraph

.TypeText vbCrLf

.TypeText vbCrLf

.ParagraphFormat.Alignment = wdAlignParagraphLeft

.TypeText Text:=("Отв. исполнитель" & sOtvIsp)

.TypeParagraph End With

End Sub

3.Щелкните правой кнопкой мыши по вашему проекту Prikaz.xls и в контекстном меню выберите Insert -> UserForm. Выделите созданный вами объект формы и нажмите на кнопку <F4>. Настройте для свойства (Name) этой формы значение UF1.

4.Поместите на форму из Toolbox единственную кнопку — элемент управления CommandButton1. Установите для этой кнопки значение свойства Caption как "Напечатать приказ" и измените размеры и местонахождение этой кнопки, чтобы форма выглядела так, как представлено на рис. 2.

51

PDF created with pdfFactory trial version www.pdffactory.com

Рис.2. Форма — пока с единственной кнопкой

5. Щелкните правой кнопкой мыши по кнопке CommandButton1 на вашей форме, в контекстном меню выберите View Code и добавьте в код событийной процедуры для события Click этой формы следующий код: Private Sub CommandButton1_Click()

Dim sPovod As String Dim sFio As String

Dim bFlagPremia As Boolean

Dim bFlagGramota As Boolean Dim nSummaPremii As Long Dim sOtvIsp As String

'Подставить данные из формы

sPovod = "освоении новых информационных технологий" sFio = "Иванова Ивана Ивановича"

bFlagPremia = True

bFlagGramota = True nSummaPremii = 100000 sOtvIsp = "Петрова П . П ." ' Конец подстановки данных

Call ЭтаКнига.DocWrite(sPovod, sFio, bFlagPremia, bFlagGramota, nSummaPremii, sOtvIsp)

End Sub

6. Запустите вашу форму на выполнение и убедитесь, что она работает: выводит в создаваемый документ Word приказ с фиксированными значениями.

Задание:

Измените форму таким образом, чтобы вместо присвоения переменным в

выделенном комментариями блоке заранее определенных значений пользователь смог выбирать данные при помощи формы. При этом:

52

PDF created with pdfFactory trial version www.pdffactory.com

∙Значение переменной sPovod должно выбираться из трех возможных значений: "освоении новых информационных технологий", "внедрении новых программных продуктов" и значение, которое пользователь может ввести через текстовое поле. Используйте для этого набор из трех переключателей и текстовое поле (оно должно быть спрятано, если пользователь выбрал один из двух других переключателей). По умолчанию должно подставляться "освоении новых информационных технологий".

∙Значение переменной sFio должно выбираться пользователем при помощи комбинированного списка. В этот комбинированный список

должны автоматически помещаться значения из всех непустых ячеек столбца A листа Excel. По умолчанию должно выбираться значение

"Иванова Ивана Ивановича".

Примечание.

Образец для работы с ячейками столбца можно получить из ответов к предыдущим лабораторным работам.

∙Значения переменных bFlagPremia и bFlagGramota должны устанавливаться в зависимости от состояния двух флажков — "Премия" и "Грамота". По умолчанию оба флажка должны быть установлены.

∙Если пользователь снял оба флажка, то ему должно выводиться предупреждающее сообщение "Не выбрана ни премия, ни почетная грамота!" с отменой вывода документа.

∙Пользователь должен иметь возможность задавать значение переменной nSummaPremii либо при помощи полосы прокрутки с диапазоном значений от 0 руб. до 100 000 руб., либо при помощи текстового поля. Если флажок "Премия" снят, то полоса прокрутки и текстовое поле должны быть спрятаны от пользователя.

∙Ход полосы прокрутки должен быть равен 100 рублям.

∙По умолчанию размер премии должен быть равен 100 рублям.

∙Поместите на форму еще одну кнопку "Отмена". Эта кнопка должна

закрывать текущую форму и срабатывать при нажатии на клавишу

<Esc>.

∙В заголовке формы должно выводиться значение "Формирование приказа о выплате премии".

Общий вид формы может выглядеть, например, так, как представлено на рис.3:

53

PDF created with pdfFactory trial version www.pdffactory.com

Рис. 3. Готовая форма

Лабораторная работа №15

Самостоятельная работа

1.Вы достаточно потрудились, самое время отдохнуть. Выполним работу, которая отвлечет Вас. Запустите электронную таблицу Microsoft Excel.

2.Запустите редактор VBA. Выполните команду Сервис – Макрос – Редактор

VB.

3.В окне ProjectVBAProject для ЭтаКнига правой кнопкой мыши выполните

View – Code.

4.В появившемся окне введите код:

Sub ShowStars()

Randomize 'Генератор случайных чисел

StarWidth = 100 'Ширина звезды StarHeight = 100 'Высота звезды

For i = 1 To 10 'Цикл = количество звезд

TopPos = Rnd() * (ActiveWindow.UsableHeight - StarHeight) 'Позиция по

вертикали

LeftPos = Rnd() * (ActiveWindow.UsableWidth - StarWidth) 'Позиция по

горизонтали

Set NewStar = ActiveSheet.Shapes.AddShape _ (msoShape4pointStar, LeftPos, TopPos, StarWidth, StarHeight) 'Непосредственно добавление звезды

NewStar.Fill.ForeColor.SchemeColor = Int(Rnd() * 56) 'Заливка случайным

цветом

Application.Wait Now + TimeValue("00:00:01") 'Ждем прорисовки для эффекта

появления

DoEvents 'Даем обновиться данным

54

PDF created with pdfFactory trial version www.pdffactory.com

Next i

Application.Wait Now + TimeValue("00:00:02") 'Пауза перед тем как убирать

звезды

Set myShapes = Worksheets(1).Shapes 'Все рисованные объекты. В нашем случае - звезды нарисованнные нами

For Each shp In myShapes 'перебираем в цикле все звезды

If Left(shp.Name, 9) = "AutoShape" Then 'Если это наши объекты, то shp.Delete 'удаялем их

Application.Wait Now + TimeValue("00:00:01") 'Ждем для эффекта угасания End If

Next

Worksheets(1).Shapes("Message").Visible = True End Sub

5.Запустите программу, нажав клавишу F5, и переключитесь с панели задач на Excel.

Наслаждаемся проделанной работой.

6.Сохраните работу в рабочей папке.

55

PDF created with pdfFactory trial version www.pdffactory.com

Список литературы

1.Гарнаев А. Excel, VBA, Internet в экономике и финансах. Санк- Петербург, 2005.

2.Программирование в пакетах MS OFFICE. Под редакцией профессора С.В.Назарова. М: Финансы и статистика, 2007.

3.Слепцова Л.Д. Программирование на языке VBA. Самоучитель,: - М.: Издательский дом «Вильямс», 2004

4.Браун С. Visual Basic 5 c самого начала – СПб : Питер, 1998

56

PDF created with pdfFactory trial version www.pdffactory.com

ИНФОРМАТИКА

VBA в Office

Елена Владимировна Ефимова

Ответственная за выпуск директор издательства

Изд. №

Подписано к печати

Объем 3 уч.-изд.л.

Печать офсетная

Печать офсетная

Гарнитура

«Таймс»

 

 

Формат 60x84/16

Тираж 200 экз.

Заказ №

 

 

 

344002, г. Ростов-на-Дону, ул. Б.Садовая, 69,РГЭУ «РИНХ». Издательство.

Отпечатано

57

PDF created with pdfFactory trial version www.pdffactory.com