О стоимости курса |
Основы VBA: синтаксис, переменные, типы данных
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 и нажали на кнопку.
Как видите, вместо сложения мы получили конкатенацию. Любые значения, вводимые в текстовые поля, по умолчанию рассматриваются как строковые. Чтобы все-таки получить сумму введенных чисел в поле "Сумма чисел", нам нужно превратить строки, пусть и содержащие числовые символы, в настоящие числа, преобразовать их из типа данных 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.) вы можете видеть результат выполнения этого кода.
Чтобы проверить, являются ли данные, хранимые в переменной типа Variant, числом, можно воспользоваться функцией IsNumeric.
Для точного определения типа данных, которые хранятся в переменной типа Variant, вы можете воспользоваться функцией VarType.
5.12. Выводы
В этой лекции мы подробно обсудили особенности использования различных типов данных в VBA, работу с переменными, операторами и функциями преобразования и проверку типов данных. Наша следующая лекция посвящена встроенным и пользовательским функциям.