Институт управления, бизнеса и права
Опубликован: 25.03.2009 | Доступ: свободный | Студентов: 7323 / 1525 | Оценка: 4.41 / 4.15 | Длительность: 14:33:00
Лекция 5:

Основы VBA: синтаксис, переменные, типы данных

< Лекция 4 || Лекция 5: 123 || Лекция 6 >

5.8. Преобразование типов данных

05-04-Эксперимент с типами данных.docm — пример к п. 5.8.

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

Давайте проведем эксперимент. Создадим форму, назовем ее frm_First, разместим на ней три текстовых поля — txt_First и txt_Second для ввода чисел, и txt_Summ для вывода суммы этих чисел. Добавим на форму кнопку cmd_First с надписью Сумма и создадим для нее обработчик события Click (листинг 5.8.).

txt_Summ = txt_First + txt_Second
Листинг 5.8. Обработчик события Click кнопки cmd_First

На рис. 5.4. вы можете видеть форму после того, как мы ввели в первое и второе поля числа 1 и 2 и нажали на кнопку.

Эксперимент: вместо сложения — конкатенация

Рис. 5.4. Эксперимент: вместо сложения — конкатенация

Как видите, вместо сложения мы получили конкатенацию. Любые значения, вводимые в текстовые поля, по умолчанию рассматриваются как строковые. Чтобы все-таки получить сумму введенных чисел в поле "Сумма чисел", нам нужно превратить строки, пусть и содержащие числовые символы, в настоящие числа, преобразовать их из типа данных String в один из числовых типов.

Для таких "превращений" существуют специальные функции преобразования типов.

5.9. Val — тип String в тип Double

Функция Val применяется для конверсии строковых переменных в числовые, а именно – переменных типа String в тип Double.

Чтобы наш пример заработал, код обработчика нажатия кнопки можно переписать так (листинг 5.9.):

txt_Summ = Val(txt_First) + Val(txt_Second)
Листинг 5.9. Измененный обработчик события Click кнопки cmd_First

Давайте рассмотрим еще несколько примеров использования этой функции.

Val (" 12345привет") возвратит число 12345.

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

Val ("1 2 3") возвратит число 123
Val ("1 2 и 3") возвратит число 12.

Иногда нужно провести обратное преобразование — превратить число в строку.

5.10. Str — числовые типы в String

Функция Str конвертирует данные различных числовых типов в тип String.

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

Например, функция Str (12) возвратит строку " 12 ". Мы рассмотрим пример с использованием функции Str немного ниже, когда будем говорить о работе со строками.

Существуют и другие функции, предназначенные для конверсии типов данных. Их названия состоят из сокращенного слова "Convert" и сокращенного же названия типа данных, в который они конвертируют входные значения. Например, это CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar. Скажем, функция CInt конвертирует данные в формат Integer. Учитывая особенности этого типа данных, корректно могут быть сконвертированы лишь значения от -32768 до 32767. Причем, дробные числа округляются при конверсии до ближайшего четного числа — 0.5 округляется до 0, 1.5 — до 2. Если вам понадобятся подробности о каждой из этих функций — обратитесь к справочной системе VBA.

5.11. Функции проверки типа данных

05-05-Проверка типов данных.docm — пример к п. 5.11.

Если вам нужно узнать тип данных переменной, вы можете воспользоваться функцией TypeName.

Добавим в документ Microsoft Word кнопку, назовем ее cmd_DataType, надпишем как Проверка типа и внесем в ее обработчик Click такой код (листинг 5.10.):

Dim num_MyAge as Byte
num_MyAge = 24
MsgBox (TypeName(num_MyAge))
Листинг 5.10. Обработчик события Click кнопки cmd_DataType

На (рис. 5.5.) вы можете видеть результат выполнения этого кода.

Результат вывода типа данных

Рис. 5.5. Результат вывода типа данных

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

Для точного определения типа данных, которые хранятся в переменной типа Variant, вы можете воспользоваться функцией VarType.

5.12. Выводы

В этой лекции мы подробно обсудили особенности использования различных типов данных в VBA, работу с переменными, операторами и функциями преобразования и проверку типов данных. Наша следующая лекция посвящена встроенным и пользовательским функциям.

< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Евгений Ушаков
Евгений Ушаков

Добрый день! Поясните, пожалуйста, 3000 р. стоит документ об окончании курса. Если он не нужен, то можно учиться бесплатно?

Александр Новиков
Александр Новиков

Добрый день! Очень нужен справочник по объектам VBA c описание их методов и свойств.

Кто-нибудь знает, где можно приобрести?

(Он конечно есть в VBA - Object browser, но не очень удобный)