Язык vba поддерживает автоматическое преобразование следующих типов данных

Канал в Telegram

Вы здесь

Функции преобразования типов данных в VBA

Часто в программировании возникает необходимость перевести один тип в другой (по доступным типам данных в VB читаем в этой статье). Например, число в строку или строку в дату. Для перевода (преобразования) типов в VBA есть множество функций позволяющих это сделать. Но есть один момент, преобразовать возможно только тот тип или значение, которое подходит по формату нового типа. К примеру, если преобразовать строку «356» в целый тип, то на выходе мы получим число, но если в этой строке будет находиться символ, не относящийся к числу «356р», то преобразование завершится ошибкой несовпадения типов (Type mismatch).

В таблице ниже приведен полный список функций преобразования и тип, в который происходит преобразование:

Функция

Возвращает тип

Действие

CBool

Преобразует значение в булевый тип

CByte

Преобразует значение в тип Byte

CCur

Преобразует значение в тип Currency

CDate

Преобразует значение в Дату и Время

CDbl

Преобразует значение в тип Double

CDec

Преобразует значение в подтип Decimal типа Variant

CInt

Преобразует значение в целый тип

CLng

Преобразует значение в длинное целое

CSng

Преобразует значение в тип Single

CStr

Преобразует значение в строку

CVar

Преобразует значение в тип Variant

Использование функций преобразования типов

Работать с функциями преобразования легко. К примеру, необходимо преобразовать число 4568 в строку:

Dim OutStr as String
OutStr = CStr(4568)

Преобразование строки или числа в булевый тип

Dim OutBool as Boolean
‘Функция вернет значение True
OutBool = CBool(1)
OutBool = CBool («TRUE»)

Преобразование строки или числа в дату и время

Dim OutDate as Date
OutDate = CDate(«25/06/03 23:35»)
OutDate = CDate(«25.06.03»)
OutDate = CDate(«37797,9826388889»)

Примечание: Функции преобразования можно использовать непосредственно в выражении избегая создания лишних переменных. Например: x=y+CInt(«456»)+z

Источник

Описанные ниже функции позволяют преобразовать переданный параметр, который может быть или числом или строкой к заданному типу данных vba. Отличительная особенность данных функций vba преобразования типов от остальных – префикс C (от слова Convert), после которого следует краткое имя типа данных, к которому происходит преобразование (например, Bool – Boolean, Cur – Currency, и так далее).

CBool (par) – Преобразование к типу Boolean. Если параметр par будет отличаться от 0, то функция вернет значение true, в противном случае – false.

CByte (par) – Преобразование к типу Byte. Параметр par должен содержать числовое значение или строку, которые являются числом без знака в диапазоне значений от 0 до 255. Условия преобразования:

CDate (par) – Преобразует переданный параметр vba в тип дата.

CDec (par) – Преобразование к типу vba Decimal. Параметр должен содержать любое числовое или строковое значение, входящее в диапазон представляющий целое число в диапазоне +/-79 228 162 514 264 337 593 543 950 335 или смешанное с не более чем 28 цифрами в дробной части в диапазоне +/-7.9228162514264337593543950335. Минимальным возможным ненулевым числом является 0.0000000000000000000000000001.

CStr (par) – Преобразует переданный параметр в строковое значение.

Str (par) — Аналогично функции CStr, но перед положительными числами вставляется пробел.

CVar (par) – Преобразует переданы параметр в тип vba Varint.

CVDate (par) – Фактически, функция аналогична CDate, и используется только для совместимости.

Val (par) — Извлекает из переданного параметра только цифры.

TypeName (par) – Функция возвращает имя типа данных vba, для переданного параметра.

Следующие функции преобразования vba возвращают логические значения true или false, и предназначены для проверки переданного параметра на конкретный тип данных.

IsEmpty (par) – Тип Empty

IsMissing (par) – Необязательный параметр, переданный в процедуру

IsNull (par) – Пустое значение

Для преобразования числового значения к восьмеричному или шестнадцатеричному виду, применяются следующие функции:

Hex (par) – Шестнадцатеричный вид.

Oct (par) – Восьмеричный вид.

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

&O – Буква O говорит, что мы хотим прописать восьмеричное значение, которое следует после символа O.

Спасибо за внимание. Автор блога Владимир Баталий

Источник

Функции преобразования типов (Visual Basic) Type Conversion Functions (Visual Basic)

Эти функции компилируются встроенным, то есть код преобразования является частью кода, который вычисляет выражение. These functions are compiled inline, meaning the conversion code is part of the code that evaluates the expression. Иногда нет вызова процедуры для выполнения преобразования, что повышает производительность. Sometimes there is no call to a procedure to accomplish the conversion, which improves performance. Каждая функция приводит выражение к определенному типу данных. Each function coerces an expression to a specific data type.

Синтаксис Syntax

Часть Part

expression
Обязательный. Required. Любое выражение исходного типа данных. Any expression of the source data type.

Тип данных возвращаемого значения Return Value Data Type

Имя функции определяет тип данных возвращаемого значения, как показано в следующей таблице. The function name determines the data type of the value it returns, as shown in the following table.

Имя функции Function name Тип возвращаемых данных Return data type Диапазон для expression аргумента Range for expression argument
CBool Логический тип данных Boolean Data Type Любое допустимое Char или String числовое выражение. Any valid Char or String or numeric expression.
CByte Тип данных Byte Byte Data Type Byte.MinValue(от 0) до Byte.MaxValue (255) (без знака); дробные части округляются. 1 Byte.MinValue (0) through Byte.MaxValue (255) (unsigned); fractional parts are rounded. 1

1 дробная часть может подвергаться специальному типу округления, называемому банковским округлением. 1 Fractional parts can be subject to a special type of rounding called banker’s rounding. Дополнительные сведения см. в разделе «Примечания». See «Remarks» for more information.

Комментарии Remarks

Такая оптимизация позволяет выполнять код, выполняющий большое количество целочисленных преобразований, в два раза быстрее. This optimization allows code that does a large number of integer conversions to run up to twice as fast. В следующем примере демонстрируются эти оптимизированные преобразования с плавающей запятой в целые числа: The following example illustrates these optimized floating-point-to-integer conversions:

Поведение Behavior

Приведение. Coercion. В общем случае можно использовать функции преобразования типов данных для приведения результата операции к конкретному типу данных, а не по типу данных по умолчанию. In general, you can use the data type conversion functions to coerce the result of an operation to a particular data type rather than the default data type. Например, используйте CDec для принудительного выполнения десятичных арифметических операций в случаях, когда обычно выполняется операция с одиночной точностью, двойной точностью или целочисленной. For example, use CDec to force decimal arithmetic in cases where single-precision, double-precision, or integer arithmetic would normally take place.

Неудачные преобразования. Failed Conversions. Если expression переданный функции объект находится вне диапазона типа данных, в который она должна быть преобразована, OverflowException возникает исключение. If the expression passed to the function is outside the range of the data type to which it is to be converted, an OverflowException occurs.

Если дробная часть равна точности 0,5, функции целочисленного преобразования округляют его до ближайшего четного целого числа. If the fractional part is exactly 0.5, the integer conversion functions round it to the nearest even integer. Например, 0,5 округляется до 0, а 1,5 и 2,5 оба округляются в 2. For example, 0.5 rounds to 0, and 1.5 and 2.5 both round to 2. Иногда это называется округлением банкаи предназначено для компенсации смещения, которое может накапливаться при одновременном добавлении многих таких чисел. This is sometimes called banker’s rounding, and its purpose is to compensate for a bias that could accumulate when adding many such numbers together.

Преобразования даты и времени. Date/Time Conversions. Используйте IsDate функцию, чтобы определить, можно ли преобразовать значение в дату и время. Use the IsDate function to determine if a value can be converted to a date and time. CDate распознает литералы даты и литералы времени, но не числовые значения. CDate recognizes date literals and time literals but not numeric values. Чтобы преобразовать значение Visual Basic 6,0 в Date Date значение в Visual Basic 2005 или более поздней версии, можно использовать DateTime.FromOADate метод. To convert a Visual Basic 6.0 Date value to a Date value in Visual Basic 2005 or later versions, you can use the DateTime.FromOADate method.

Нейтральные значения даты и времени. Neutral Date/Time Values. Тип данных Date всегда содержит сведения о дате и времени. The Date Data Type always contains both date and time information. В целях преобразования типов Visual Basic учитывает 1/1/0001 (1 января 1 года) как нейтральное значение для даты, а 00:00:00 (полночь) — как нейтральное значение времени. For purposes of type conversion, Visual Basic considers 1/1/0001 (January 1 of the year 1) to be a neutral value for the date, and 00:00:00 (midnight) to be a neutral value for the time. При преобразовании Date значения в строку не CStr включает нейтральные значения в результирующую строку. If you convert a Date value to a string, CStr does not include neutral values in the resulting string. Например, если преобразовать #January 1, 0001 9:30:00# в строку, то результатом будет «9:30:00 AM»; сведения о дате подавляются. For example, if you convert #January 1, 0001 9:30:00# to a string, the result is «9:30:00 AM»; the date information is suppressed. Однако сведения о дате по-прежнему содержатся в исходном Date значении и могут быть восстановлены с помощью таких функций, как DatePart Function. However, the date information is still present in the original Date value and can be recovered with functions such as DatePart function.

Чувствительность языка и региональных параметров. Culture Sensitivity. Функции преобразования типов, включающие строки, выполняют преобразования в соответствии с текущими параметрами языка и региональных параметров для приложения. The type conversion functions involving strings perform conversions based on the current culture settings for the application. Например, CDate распознает форматы даты в соответствии с настройками языкового стандарта системы. For example, CDate recognizes date formats according to the locale setting of your system. Необходимо указать день, месяц и год в правильном порядке для вашего языкового стандарта, иначе Дата может интерпретироваться неправильно. You must provide the day, month, and year in the correct order for your locale, or the date might not be interpreted correctly. Длинный формат даты не распознается, если он содержит строку дня недели, например «среда». A long date format is not recognized if it contains a day-of-the-week string, such as «Wednesday».

CType Function CType Function

Сравнение CType с другими ключевыми словами преобразования типов см. в разделе Оператор DirectCast и Оператор TryCast. For a comparison of CType with the other type conversion keywords, see DirectCast Operator and TryCast Operator.

Пример CBool CBool Example

Пример CByte CByte Example

Пример CChar CChar Example

В следующем примере функция используется CChar для преобразования первого символа String выражения в Char тип. The following example uses the CChar function to convert the first character of a String expression to a Char type.

Пример для CDate CDate Example

В следующем примере функция используется CDate для преобразования строк в Date значения. The following example uses the CDate function to convert strings to Date values. Обычно не рекомендуется жестко кодировать даты и время в виде строк (как показано в этом примере). In general, hard-coding dates and times as strings (as shown in this example) is not recommended. Вместо этого используйте литералы даты и временные литералы, например #Feb 12, 1969 # и #4:45:23 PM #. Use date literals and time literals, such as #Feb 12, 1969# and #4:45:23 PM#, instead.

Пример с CDbl CDbl Example

Пример CDec CDec Example

Пример функции CInt CInt Example

Пример с CLng CLng Example

Пример CObj CObj Example

Пример Ксбите CSByte Example

Пример CShort CShort Example

Пример CSng CSng Example

Пример функции CStr CStr Example

В следующем примере функция используется CStr для преобразования Date значений в String значения. The following example uses the CStr function to convert Date values to String values.

CStr всегда отображает Date значение в стандартном коротком формате для текущего языкового стандарта, например «6/15/2003 4:35:47 PM». CStr always renders a Date value in the standard short format for the current locale, for example, «6/15/2003 4:35:47 PM». Однако CStr подавляет нейтральные значения 1/1/0001 для даты и 00:00:00 для времени. However, CStr suppresses the neutral values of 1/1/0001 for the date and 00:00:00 for the time.

Пример Куинт CUInt Example

Пример Кулнг CULng Example

Пример Кушорт CUShort Example

Источник

Поделиться с друзьями
admin
Оцените автора
( Пока оценок нет )
Как переводится?
Adblock
detector