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

Методичка для Д в 1 семестре

.pdf
Скачиваний:
6
Добавлен:
17.04.2015
Размер:
574.51 Кб
Скачать

Выполнение инженерных расчетов с использованием типовых алгоритмов средствами VBA.

Введение

Название BASIC представляет собой аббревиатуру от Beginner's Allpurpose Symbolic Instruction Code – универсальный язык символического коди- рования для начинающих. BASIC был разработан в середине 1960-х годов со- трудниками Дартмутского колледжа по руководством Дж. Кемени и Т. Куртца. В последующем BASIC неоднократно подвергался расширениям и модифика- циям.

Язык Visual Basic (VB) включает в себя средства визуального проектиро- вания и объектно-ориентированного программирования. В языке VB реализо- ван визуальный стиль программирования, позволяющий не столько програм- мировать, сколько проектировать программу (приложение) – сначала создавать рабочую среду, интерфейс, элементы управления (меню, окна диалога, кнопки и т. п.) и только затем записывать требуемые операторы обработки данных.

Язык Visual Basic for Application (VB для приложений -VBA) является со-

временным языком программирования, предназначенным для расширения функциональных возможностей документов, созданных в любом приложении пакета Microsoft Office. Так как инженерные расчеты чаще всего выполняются в программе Microsoft Excel, в курсе информатики для будущих инженеров фа- культета УПП раздел "Основы программирования" включает изучение языка

VBA для Excel.

Методические указания и задание на расчетно-графическую работу со- ставлены при-менительно к учебной программе для студентов очной формы обучения специальности «Организация перевозок и управление на транспорте» (железнодорожном) и являются дополнением к лекционному курсу и учебной литературе.

1

1. Основы программирования на VBA

1.1. Типы данных. Область определения переменных

Тип данных определяет, каким образом биты данных, представляющие конкретное значение, хранятся в памяти ПК. Имеющиеся в VBA основные ти- пы данных представлены в таблице 1:

Таблица 1

Тип данных

Диапазон значений

Объем па-

Значение по

мяти (байт)

умолчанию

 

 

 

Byte

Целые числа

От 0 до 255

1

0

Integer

" "

От -32768 до 32767

2

0

Long

" "

От -2 147 483 648 до

4

0

 

 

2 147 483 647

 

 

Single

Вещественные

От -3,4Е38 до -1,4Е-45 (для

4

0

 

числа

отр.)

 

 

 

 

От 1,4Е-45 до 3,4Е38 (для

 

 

 

 

пол.)

 

 

Double

" "

От -1,7Е308 до -4,9Е-324

8

0

 

 

(для отр.)

 

 

 

 

От 4,9Е-324 до 1,7Е308 (для

 

 

 

 

пол.)

 

 

Boolean

Логический

True или False

2

False

String * n

Строковый -

От 1 до 65400

n

"0…0"

(n – дли-

постоянной

 

 

(Строка из n

на стро-

длины

 

 

невидимых

ки)

 

 

 

нулей)

String

Строковый

От 0 до ≈2 миллиарда

10+длина

""

 

переменной

 

строки

(пустая

 

длины

 

 

строка)

Date

Дата и время

От 1 янв. 100 г. до 31 дек.

8

#12/30/1899#

 

 

9999 г.

 

 

Currensy

Денежный

От –922 337 203 685

8

0

 

 

477,5808

 

 

 

 

до 922 337 203 685 477,5807

 

 

Variant

Любой

 

для чисел =

Empty (Пус-

 

 

 

16;

то)

 

 

 

для строк =

 

 

 

 

22 + длина

 

 

 

 

строки

 

2

1.2. Приоритет выполнения операций

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

Таблица 2

Приоритет

Операция

1

Вызов функции и скобки

2

^ (возведение в степень)

3

- (смена знака)

4

*, / (умножение, деление)

5

\ (целочисленное деление)

6

Mod (остаток от деления)

7

+ , - (сложение, вычитание)

8

& (объединение строк)

9

>, <, >=, <=, <>,= (больше,

 

меньше, не меньше, не больше, не равно,

 

равно)

10

Not (логическое отрицание)

11

And (логическое И)

12

Or (логическое Или)

1.3. Встроенные функции

В VBA имеется большой набор встроенных функций, использование ко- торых существенно упрощает программирование. Эти функции можно разде- лить на следующие основные категории:

Математические функции

Функции преобразования форматов

Функции обработки строк

Функции времени и даты Ниже рассмотрены основные функции из этих категорий.

3

Математические функции:

Таблица 3

Функция

Возвращаемое значение

 

 

Abs (числ. вы-

Модуль (абсолютная величина)числа

ражение)

 

 

 

Atn (числ. вы-

Арктангенс

ражение)

 

 

 

Cos (числ. выраже-

Косинус

ние)

 

 

 

Ехр (числ. выраже- Экспонента, т. е. результат возведения основания нату- ние) рального логарифма в указанную степень

Log (числ. выраже- Натуральный логарифм

ние)

Rnd (числ. выраже- Случайное число из интервала [0,1).

ние)

Если числ. выражение меньше нуля, то Rnd возвращает каждый раз одно и то же число, используя аргумент в ка- честве опорного числа; если числ. выражение больше нуля или аргумент опущен, то следующее случайное число в последовательности; если числ. выражение рав- няется нулю, то случайное число, возвращенное при предыдущем вызове этой функции.

Перед вызовом функции Rnd используйте инструкцию Randomize без аргумента

Sgn (числ. выраже- Знак числа ние)

Sin (числ. выраже- Синус ние)

4

Функция

 

Возвращаемое значение

 

 

 

 

 

Sqr (числ. выраже-

Квадратный корень из числа

 

ние)

 

 

 

 

 

 

 

Tan (числ. выраже-

Тангенс

 

ние)

 

 

 

 

 

 

 

Fix (числ. выраже-

 

Обе функции, Int и Fix, отбрасывают дробную

 

ние) и Int (числ. вы-

часть числа и возвращают целое значение.

 

ражение)

 

Различие между функциями int и Fix состоит в том,

 

 

что для отрицательного значения аргумента число функ-

 

 

ция Int возвращает ближайшее отрицательное целое чис-

 

 

ло, меньшее либо равное указанному, a Fix — ближайшее

 

 

отрицательное целое число, большее либо равное указан-

 

 

ному

 

 

 

 

 

 

Функции преобразования форматов:

 

 

Таблица 4

 

 

 

Val (строковое вы-

Возвращает числа, содержащиеся в строке,

ражение)

как числовое значение соответствующего типа

 

 

 

 

Str (числ. выраже-

Возвращает значение типа variant (String), яв-

ние)

ляющееся строковым представлением числа

 

 

 

 

 

В качестве допустимого десятичного разделителя функция Str восприни- мает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию Cstr, описанную ниже.

Чтобы представить числовое значение как дату, время, денежное значе- ние или в специальном формате, следует использовать функцию Format.

Эта функция возвращает значение типа variant (string), содержащее выра- жение, отформатированное согласно инструкциям, заданным в описании фор- мата.

5

Синтаксис:

Format(<Выражение>[,<Формат>])

Выражение любое допустимое выражение Формат любое допустимое именованное или определяемое пользова-

телем выражение формата. Примером именованного формата является Fixed —

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

 

Таблица 5

 

 

 

Символ

Назначение

 

 

 

 

 

Резервирует позицию цифрового разряда. Отображает цифру

 

 

или нуль. Если у числа, представленного аргументом, есть ка-

 

0

кая-нибудь цифра в той позиции разряда, где в строке формата

 

 

находится 0, функция отображает эту цифру аргумента, если

 

 

нет в этой позиции отображается нуль

 

 

Резервирует позицию цифрового разряда. Отображает цифру

 

 

или ничего не отображает. Если у числа, представленного аргу-

 

#

ментом, есть какая-нибудь цифра в той позиции разряда, где в

 

строке формата находится #, функция отображает эту цифру ар-

 

 

гумента, если нет в исходной позиции не отображается ниче-

 

 

го. Действие данного символа аналогично действию о, за ис-

 

 

ключением того, что лидирующие нули не отображаются

 

 

Резервирует позицию десятичного разделителя. Указание точки

 

.

в строке формата определяет, сколько разрядов необходимо

 

 

отображать слева и справа от десятичной точки

 

 

 

 

%

Резервирует процентное отображение числа

 

 

 

 

,

Разделитель разряда сотен от тысяч

 

 

 

 

:

Разделитель часов, минут и секунд в категории форматов Время

 

(Time)

 

 

 

/

Разделитель дня, месяца и года в категории форматов Дата

 

(Date)

 

 

 

E+, E-,

Разделитель мантиссы и порядка в экспоненциальном формате

 

e+, e-

 

 

6

Функции обработки строк:

 

Таблица 6

 

 

Функция

Возвращаемое выражение

 

 

Asc (Строка)

Возвращает ASCII-код начальной буквы строки.

 

 

Chr(Код)

Преобразует ASCII-код в строку.

 

Например

 

Chr ( 13 ) — переход на новую строку,

 

Chr ( 97 ) = "а"

 

 

Lcase(Строка)

Преобразует строку к нижнему регистру.

 

 

Ucase(Строка)

Преобразует строку к верхнему регистру.

 

 

Left(Строка, Число сим-

Возвращает подстроку, состоящую из заданного

волов)

числа первых символов исходной строки.

Right(Строка, Число сим-

Возвращает строку, состоящую из заданного числа

волов)

последних символов исходной строки.

Mid(Строка, Начальная

Возвращает подстроку Строки, содержащую ука-

позиция [,Число симво-

занное Число символов от Начальной позиции. Если

лов])

Число символов не указано, возвращает все символы

 

Строки от Начальной позиции.

Len(Строка)

Возвращает число символов строки.

Ltrim(Строка)

Возвращает копию строки без пробелов в начале.

Rtrim(Строка)

Возвращает копию строки без пробелов в конце.

Trim(Строка)

Возвращает копию строки без пробелов в начале и в

 

конце

Space(Число)

Возвращает строку, состоящую из указанного Числа

 

пробелов.

String(Число, Символ)

Возвращает строку, состоящую из указанного Числа

 

повторений одного и того же Символа.

7

Функции времени и даты:

 

Таблица 7

 

 

Функция

Возвращаемое значение

 

 

Date

Возвращает значение типа Variant (Date) , содержащее теку-

 

щую системную дату

Time

Возвращает значение типа Variant (Date) , содержащее теку-

 

щее время по системным часам компьютера

Now

Возвращает значение типа Variant (Date) , содержащее теку-

 

щую дату и время по системному календарю и часам компь-

 

ютера

Hour(время),

Возвращают значения типа Variant (Integer), содержащее це-

Minute(время),

лое число, которое представляет часы, минуты и секунды в

Second(время)

значении времени.

Day(дата),

Возвращает значение типа Variant (Integer), содержащее це-

Month(дата),

лое число, которое представляет день, месяц, год в значении

Year(дата)

даты.

1.4. Операторы VBA

Оператор VBA представляет собой полную команду языка VBA. Он мо- жет содержать ключевые слова, переменные, константы, свойства объектов и выражения.

Текст оператора можно продолжить на другой строке, если текущую строку закончить пробелом и символом подчеркивания ( _ ).

В одной строке могут находиться несколько операторов. В этом случае они отделяются друг от друга двоеточием (:).

VBA позволяет добавлять в текст программы комментарии. Комментарий

это текст, который начинается с апострофа ('). При этом все символы, начиная от апострофа до конца строки, не будут обрабатываться компилятором. Ком- ментарии выполняют две важные функции:

1Делают программу легко читаемой, поясняя смысл программных кодов и алгоритма.

2Временно отключают фрагменты программы при ее отладке.

8

1.4.1. Оператор присваивания

Синтаксис:

[Let] <Переменная или свойство объекта> = <выражение>

Пример1:

Dim a As Integer, стр As String

Let стр = "компьютер"

а = 5 : a = a + 4

Пример2 - Значение выражения может быть присвоено только в том слу- чае, если типы переменной и выражения совместимы:

Dim a As Integer, стр As String

стр = “компьютер

а = “монитор” ' нельзя присвоить числовой переменной значение строки

1.4.2. Встроенные диалоговые окна

В проектах VBA можно использовать две разновидности встроенных диалоговых окон: окна сообщений и окна ввода. Окно сообщений (MsgBox) выводит простейшие сообщения для пользователя, а окно ввода (InputBox) обеспечивает ввод информации.

Синтаксис функции InputBox (некоторые необязательные параметры здесь не указаны):

InputBox (<сообщение> [,<заголовoк >] [, <ответ>])

Эта функция отображает диалоговое окно с сообщением и полем, в кото- ром пользователь может напечатать ответ.

Аргументы:

<сообщение> — строковое выражение, отображаемое как сообщение в диалоговом окне. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата

9

каретки (Сhr(13)), символа перевода строки (chr (10)) или комбинацию этих символов (Chr( 13) & Chr (10)).

<заголовoк >— строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка поме- щается имя приложения Excel.

<ответ> — строковое выражение, отображаемое в поле ввода как исполь- зуемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым.

Пример1:

Dim Имя As String

Имя = InputBox("Ваше имя", "Привет!", "Анна")

Рис. 1

Пример2 - так как функция InputBox возвращает текст, то для ввода чи- словой информации используется функция Val, которая преобразует текст в число:

Dim a As Single

a = Val(InputBox("Введите коэффициент a="))

Рис. 2

10