Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методический комплекс ПЗ СППР 2011.doc
Скачиваний:
27
Добавлен:
16.02.2016
Размер:
1.27 Mб
Скачать

5. Введите код. Введите код между строками Sub и End Sub.

Sub CountHighSales()

Dim i As Integer, j As Integer, NumberHigh As Integer, SalesCutoff As Currency

SalesCutoff = InputBox(“С какого объёма продаж начинать подсчёт?”)

For j = 1 To 6

NumberHigh = 0

For i = 1 To 36

If Range(“SalesRange”).Cells(i,j)>= SalesCutoff Then _

NumberHigh = NumberHigh + 1

Next i

MsgBox “В регионе “ & j & “ объём продаж превышал значение “ & Format(SalesCutoff, “$0,000”) _

& “ в “ & NumberHigh & “ из 36 месяцев “

Next j

End Sub

Важно правильно выровнять строки (это упростит чтение написанного кода). Для выравнивания достаточно использовать клавишу <Таb>. Кроме того, обратите внимание на отсутствие переноса по словам в редакторе VBE. Для завершения строки и перехода на следующую строку необходимо нажать клавишу <Enter>. Кроме указанных особенностей, окно кода ничем не отличается от окна обычного текстового редактора. Обязательно проверьте и исправьте все синтаксические ошибки перед продолжением. (Наверняка вы заметили, что ключевые слова, например, Sub и End Sub автоматически выделяются синим цветом средствами редактора VBE.)

6. Запустите процедуру из VBE. К этому моменту процедура считается завершенной. Следующим этапом будет ее запуск. Для решения данной задачи подходит несколько способов, два из которых будут описаны ниже. При использовании первого метода курсор может находиться в любом месте кода процедуры. Выберите команду RunRun Sub/UserForm (Запуск → Запуск процедуры/ формы). (С другой стороны, можно щелкнуть на кнопке в виде синего треугольника на панели инструментов Standard или нажать клавишу <F5>.) В результате будет отображено диалоговое окно с полем ввода. В поле ввода можно ввести необходимое значение, например, 150000. (После этого программа будет искать все значения, которые больше или равны введенному значению.) Далее вы увидите на экране несколько окон сообщений. Каждое сообщение содержит число, указывающее на количество месяцев, в течение которых продажи в регионе превышали введенное значение.

  1. Запустите программу с помощью кнопки. Метод запуска программы, описанный выше, подходит для разработчика, но пользователь не всегда захочет входить в редактор VBE для запуска программы. Скорее всего, пользователь даже не пожелает знать о VBE. Поэтому лучшим вариантом является запуск приложения с листа, на котором расположены данные. Такой способ запуска организовать очень легко. В начале переключитесь обратно в Excel (щелкните на соответствующей кнопке панели задач в нижней части экрана). Затем щелкните правой кнопкой мыши на любой панели инструментов для отображения списка панелей инструментов Excel. Установите флажок напротив панели инструментов Формы, чтобы включить ее. Четвертый элемент управления панели инструментов Формы предназначен для создания кнопок, которые запускают макросы (т.е. процедуры). Для создания такой кнопки щелкните на кнопке панели инструментов и нарисуйте прямоугольную кнопку на листе. Вам будет предложено назначить для данной кнопки макрос. Это делается немедленно, так как единственным предназначением кнопки является запуск макроса. Конечно, кнопке будет назначен только что написанный макрос CountHighSales. После этого нужно ввести более точное название для кнопки. На данном этапе кнопка выделена (вокруг нее отображается пунктирная граница). Чтобы отменить выделение кнопки, щелкните в любой части листа. Теперь кнопка готова к использованию. Для запуска программы просто щелкните на ней.

  2. Сохраните файл. Если это еще не было сделано, сохраните файл, дав ему оригинальное (или новое) имя. В результате будет сохранена и кнопка, и только что созданный код.

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

Возможные проблемы

При попытке запуска программы на экране может появиться сообщение об ошибке. Для начала внимательно проверьте код программы и убедитесь, что он идентичен коду, показанному выше. В частности, в конце строкIfиMsgBox используются символы подчеркивания (_). Перед ниминеобходимо ввести символ пробела. (Такая комбинация применяется для продолжения длинной строки кода в следующей строке.) Аналогично, с каждой стороны символа амперсанда (&) должен присутствовать символ пробела. Если строка выделена красным цветом, это признак ошибки ввода. (Это еще полезная функция редактораVBE, предназначенная для облегчения участи программистов.) В любом случае, если вы видите один из вариантов диалогового окна ошибки, то щелкните на кнопкеEnd. Это приведет к завершению программы и позволит найти и исправить в ней имеющиеся ошибки.

Если текст программы введен правильно, но все равно возникает сообщение об ошибке, то проверьте пп. 6-7. Если для запуска программы используется п. 6, удостоверьтесь, что курсор находится в пределах процедуры. Если используется метод, описанный в п. 7, то убедитесь в назначении кнопке макроса CountHighSales. (Щелкните правой кнопкой мыши на кнопке и выберите в контекстном меню команду Назначить макрос.) В этой программе не так много возможностей для совершения ошибки, поэтому, в конце концов вам удастся заставить ее заработать.

Краткий анализ программы

В первой строке (после строки Sub) объявляются переменные, которые будут использоваться в дальнейшем. Во второй строке приведен оператор запроса данных, с помощью которого приложение отображает на экране окно, принимающее вводимые пользователем данные.

Фрагмент, начинающийся с оператора Forj= 1 То б и заканчивающийся операторомNextj, представляет цикл, который выполняет одну и ту же последовательность операций для каждого региона. Цикл — это один из самых полезных инструментов любого программиста. Например, если в задаче необходимо рассмотреть 600 регионов, а не 6, то в третьей строке достаточно заменить 6 на 600.

Внутри цикла просмотра данных по регионам находится цикл просмотра данных по месяцам, который начинается со строкиFor i = 1 То 36и заканчиваетсястрокой Next i. Внутри этого цикла введен оператор If, который сравнивает объем продаж в этом месяце с введенным пользователем значением. Если объем продаж превышает введенное значение, переменная счетчика NumberHighSales увеличивается на 1. После завершения внутреннего цикла результаты для каждого региона отображаются в окне сообщения.

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

Самостоятельно:

1. Откройте Excel, затем — две новых книги, которые, скорее всего, будут называться Книга 1 и Книга2. Перейдите в редактор VBE и отобразите окно Project. Вставьте модуль в файл Книга1 и щелкните на значке (+) возле опции Modules (Модули) для книги Книга 1, чтобы увидеть только что вставленный модуль. После этого введите в добавленный модуль следующий код и выполните его. Этот код позволяет отобразить на экране название книги.

Sub ShowName()

MsgBox "Эта книга называется " & ThisWorkbook.Name

End Sub

Наконец, перейдите в окно Project и перетащите вставленный модуль в книгу Книга2. Это приведет к созданию копии модуля в книге Книга2. Запустите процедуру в скопированном модуле — в результате на экране отобразится название второй книги. Смысл этого упражнения заключается в том, чтобы продемонстрировать методы копирования кода между книгами. Просто скопируйте модули, содержащие код (с этой целью перетащите модуль в окне проекта).

  1. Откройте файл FirstProgram.xls, созданный вами ранее, и перейдите в редактор VBE, чтобы просмотреть код. Воспользуйтесь командой Debug → Add Watch (Отладка - Добавить контрольное значение) и введите NumberHigh в текстовом поле. При этом появляется возможность следить за изменением данных в процессе выполнения программы. Разместите курсор в любом месте кода и несколько раз нажмите клавишу <F8>. Это приведет к построчному выполнению программы. Каждый раз, когда значение объема продаж будет превышать введенное пользователем число, значение переменной NumberHigh будет увеличено на 1, что сразу становится заметно в окне Watch. (Нажимать <F8> порой очень утомительно, поэтому вы можете воспользоваться кнопкой с изображением синего квадрата, которая позволяет в любой момент остановить выполнение программы. Этот значок расположен на панели инструментовStandard.)

  2. Перейдите в редактор VBE и откройте окно Immediate. После этого введите следующий код, нажимая клавишу <Enter> после ввода каждой строки. Окно называетсяImmediate - (Проверка).

?Application. Name

?Application.DefaultFilePath

?Application.Path

?Application.Version

?Application.UserName

?IsDate("Январь 29,1999")

?IsDate( "Январь 29,2000")

?Workbooks.Count

?ActiveWorkbook.Name

4. Откройте новую книгу в Excel, перейдите в редактор VBE и вставьте модуль в новую книгу. Введите следующий код в окне кода. Удостоверьтесь, что в верхней части окна отсутствует строкаOptionExplicit. (Если эта строка присутствует, удалите ее.)

Sub EnterUserNameSlowly()

Range("Al") = "Сейчас в программе работает пользователь" YourName = Application.UserName Nchars = Len(YourName)

For i = 1 To Nchars

Range("A3") = Left(YourName, i)

newHour = Hour(NowO)

newMinute = Minute(Now())

newSecond = Second(Now())

waitTime = TimeSerial(newHour, newMinute, newSecond)

Application.Wait waitTime

Next

End Sub

После этого вернитесь на лист Лист1 книги, добавьте кнопку и назначьте ей процедуру EnterUserNameSlowly. Запустите процедуру, щелкнув на кнопке. Можете объяснить, какую задачу выполняет код? (Если хотите, прочитайте описание методаwaitобъектаApplication, воспользовавшись справочным руководством окнаObject Browser.)

5.Откройте файлFirstProgram.xls, который был создан выше, и перейдите в редактор VBE. Выберите команду Tools → VBAProject Properties и перейдите на вкладку Protection. Установите флажок Lock project for viewing (Запретить просмотр проекта), введите пароль в двух полях и щелкните на кнопке ОК. Возвратитесь в Excel, сохраните файл и закройте его. После этого откройте файл и попытайтесь просмотреть код. Таким образом, вы узнали, как защитить собственный код с помощью пароля. Конечно, пароль необходимо запомнить. В противном случае даже автор не сможет увидеть код. (Если требуется снять защиту паролем, сбросьте флажок Lock project for viewing и очистите поля ввода пароля.)

Домашнее задание: Подготовить материал лекций 4-5.

Контрольные вопросы:

1. В чём отличиеVBAотVisualBasic?

2. Поясните следующие термины: объекты, свойства, значения, методы, аргументы.

3. Как вызвать редакторVBE?

4. Какой вид имеет окно редактораVBE?

5. Назовите назначение окон Propeties, Project, Immediate, Watch.

6. Какие панели инструментов имеет VBEкак минимум?

7. Как осуществить просмотр объектов?

Инструктивно-методические указания по проведению практического занятия обсуждены и одобрены на заседании кафедры КЭЭМ

Протокол № ___ от «___» __________ 200__ г.