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

1. Комментарии

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

Кроме того, комментарий можно разместить в той же строке, что и код. Для этого введите необходимый код, добавьте в конце строки один или больше пробелов, апостроф, а затем — тест комментария.

Range("Al").Value = "March Sales" 'Это ячейка заголовка таблицы

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

2. Строковые данные

Функция inputBoxпринимает как минимум один аргумент, например запрос "Введите ваше имя". Аналогично, функцияMsgBoxпринимает как минимум один аргумент, например, сообщение"Спасибо, что ввели имя". Такие значения аргументов называются строками (string). Строка представлена текстовыми данными, заключенным в двойные кавычки. Иногда строки используются в качестве аргументов функций MsgBox, InputBox, а также некоторых других функций. Строки имеют и другое применение вVBA.

Часто строковые данные — это в буквальном понимании строка текста, например, "Имя пользователя: Коля Иванов". (Еще раз стоит напомнить, чтодвойные кавычки являются частью текста и их нельзя опускать.) Часто возникают ситуации, когда строку невозможно записать буквально, а необходимо составить из нескольких частей. Такая операция называется конкатенацией строк (string concate-notion). В качестве примера можно привести использование функции InputBox для получения названия товара.

Product = InputBox("Введите название товара")

Пользователь вводит название товара в текстовом поле, и это название сохраняется в виде строки (например, " LaserJet 1100"). Строка сохраняется в переменной Product. Теперь предположим, что вам необходимо вывести окно сообщения с текстом"Название товара: LaserJet 1100.". Каким должен быть первый аргумент функцииMsgBox? Это не может быть строка вида"Название товара:LaserJet 1100.", так как заранее не известно, какое название введет пользователь. Таким образом, строку сообщения необходимо составить из трех строк: строки "Название товара: ", строковой переменнойProductи точки".". Для объединения строк используется символ конкатенации, амперсанд (&), заключенный в пробелы. (Можно использовать более одного пробела, но как минимум один пробел должен присутствовать с каждой стороны.) В результате функция MsgBox будет вызываться следующим образом.

MsgBox "Название товара: " & Product & "."

Обратите внимание, что амперсанд используется дважды для разделения переменной информации и текстовых строк. Конкатенация строк — объединение постоянной и переменной части строки — особенно важна и используется практически во всех программах.

Завершенная процедура, получающая от пользователя название товара и выводящая окно сообщения с этим названием, показана ниже. Результат запуска этой процедуры представлен на рис.1-2.

Sub GetProductName

Product = InputBox("Введите название товара.")

MsgBox "Название товара: " & Product & ".", vbinformation

End Sub

Рис. 1 Рис. 2

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

MsgBox "Это длинная строка, поэтому она будет разбита _

на две строки."

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

MsgBox "Это длинная строка, поэтому она будет разбита " & _

"на две строки."

(Обратите внимание, что после слова разбита введен пробел, поэтому слова разбита и на не будут представлены одним словом. Кроме того, пробелы будут добавлены до и после амперсанда, что является обязательным требованием в VBA.) С другой стороны, амперсанд можно разместить во второй строке.

MsgBox "Это длинная строка, поэтому она будет разбита " _

& "на две строки."

Смысл заключается в том, чтобы при разбиении строк не забыть ввести амперсанд (в первой или второй строке — это уже неважно).

Упражнение 2. Вывод сообщения

Вернемся к упражнению 1, в котором была получена цена единицы товара и количество проданных единиц. Для этого использовались окна ввода данных. На основе полученных значений вычислялась общая прибыль и выводилось сообщение"Этот продукт принес прибыль, равную $380". Теперьвам должно быть понятно, что последняя часть сообщения (значение прибыли) требует выполнения конкатенации строк. Постарайтесь немного расширить программу (а полученный результат сохранить в файле Ех4_02.xls). Начните с использования окна ввода данных для получения названия товара. После этого вы получите розничную цену единицы товара и объем продаж, но при этом не забудьте включить название товара в сообщение окон ввода данных. Например, сообщение может выглядеть так: "Введите стоимость LaserJet 1100". Подсчитайте прибыль. Наконец,выведите сообщение, которое содержит всю полученную информацию, например, "Товар LaserJet 1100 с ценой $500 продан в количестве 25 единиц; прибыль составила $12 500".Постарайтесь максимальную часть работывыполнить самостоятельно. Если потребуется помощь, то обратитесь к листингу.

Замечание по форматированию окон сообщений. Если прибыль равна 12500, как добиться ее отображения в формате $12 500? Для этого используется функция VBA Format. Она принимает два аргумента: форматируемое число и строку, которая описывает числовой формат значения. Для отображения 12500 в денежном формате (с символом доллара и разделением запятой) можно воспользоваться оператором Format (12500, "$# ##0"). Если размер прибыли хранится в переменной Revenue, то необходимо воспользоваться операторомFormat (Revenue, " $# ##0"). Функция Format сложна в использовании. Вместо того чтобы запоминать различные коды числового форматирования, обратитесь к справочному руководству по функции Format. В нем приведено несколько примеров использования этой функции.