添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


VBA中的数据类型转换

在VBE中打开对象浏览器,按照下图操作:

VBA 代码转 python vba转换器_字符串


找到VBA库并输入Conversion(转换)找到该模块,里面提供了数据转换函数。

VBA提供了两套内置的数据类型转换函数,第一组包含Int、 CVDate和Str,这是早期版本,只是向后兼容而保留。第二组函数都是以字母“C”开头,编程中使用第二组。

每个转换函数的语法基本相同,例如:

VBA 代码转 python vba转换器_字符串_02


Expression是输入参数,然后转换为相应的数据类型。

VBA支持数据类型转换的功能有:

VBA.Conversion.CBool(Expression) as Boolean

将变量Expression转换为Boolean数据类型,expression可以是任何数值类型或任何能够转换为数值类型的字符串,如果expression = 0 or “0” 返回 False,否则返回True(-1)。

VBA.Conversion.CByte(Expression) as Byte

将变量expression转换为Byte数据类型,expression可以是任何数值类型或任何能够转换为数值类型的字符串。Expression的范围0-255,如果exp超出范围将显示错误。如果exp是浮点数,那么在转换为byte之前,先四舍五入,再转换。

VBA.Conversion.CDec(exp)

将exp转换为Decimal子类型。Exp可以是任何Decimal范围内的数值或字符串。在VBA中这个函数是唯一能生产Decimal数据类。

VBA.Conversion.CDate(exp) as Date

将exp转换为 Date/Time数据类型。exp 是日期数字和表示日期的字符串并将其转换为电脑表示的日期格式。例如:在设置为美国格式mm/dd/yy的电脑上,如果将英国日期格dd/mm/yy且使用CDate进行转换,则转换为美国日期格式。

VBA.Conversion.CCur(exp) as Currency

将exp转换为货币数据类型,exp 可是可以转换的数值和字符串,该函数根据电脑语言环境对十分位和千分位进行编码。

VBA.Conversion.CInt(exp) as Integer

将exp 转换为 Integer类型,exp 可以是Interger表示范围的任何数值和字符串。

VBA.Conversion.CLng(exp) as Long

将exp 转换为Long类型,exp 可以是Long表示范围内的数值和字符串。

VBA.Conversion.CSng(exp) as Single

将exp 转换为Single类型,exp 可以是Single表示范围内的数值和字符串。

VBA.Conversion.CStr(exp) as String

将exp 转换为String类型,exp 可以任何数据类型

VBA.Conversion.CVar(exp) as Variant

将exp 转换为Variant类型,exp 可以任何数据类型

Variant变体数据类型

VBA中包含一种特殊的数据类型即Variant(变体)类型。它允许与VBA中任何数据类型使用并自动计算出赋值类型最接近的数据类型,只是性能和代码的阅读收到影响。

Variant特殊的子类型

Variant可以表示所有的内置数据类型外,该变体还支持以下特殊数据类型。

Empty

在声明Variant新变量并没有赋值前,Empty子类型将自动赋值给变量。

VBA 代码转 python vba转换器_VBA 代码转 python_03


var1的子类型为 Empty,在var2没有赋值前也为Empty。可以显示赋空值。

VBA 代码转 python vba转换器_VBA_04

Null

Null是一种特殊的子类型,表示变量不包含任何有效的数据,为了类型为Null,变量必须显示的赋Null。

VBA 代码转 python vba转换器_VBA_05

Error

错误子类型用于存储错误编号,错误编号由VBA自动生成,然后供错误处理程序使用。

确定Variant表示的具体数据类型

让变量Variant来代替所有的数据类型很好,但是有时候要确定储存到变量里真实的数据类型,VBA提供两个函数:VBA.Information.VarType 返回整数来确定具体的数据类型。VBA.Information.TypeName 返回具体数据类型的字符串。

VBA 代码转 python vba转换器_字符串_06

VarType

语法:
VBA.Information.VarType(exp) as VBA.VbVarType
Exp 需要确定子类型的变量,下面是其返回的具体子类型

返回值

子类型

枚举符号

0

Empty

vbEmpty

1

Null

vbNull

2

Integer

vbInteger

3

Long

vbLong

4

Single

vbSingle

5

Double

vbDouble

6

Currency

vbCurrency

7

Date

vbDate

8

String

vbString

9

OLE Automation object

vbObject

10

Error

vbError

11

Boolean

vbBoolean

12

Array of Variant

vbVariant

13

Data access object

vbDataObject

14

Decimal

vbDecimal

17

Byte

vbByte

36

User-defined Type

vbUserDefinedType

8192

Array

vbArray

实际,VarType函数不会返回8192,如上表所述,当传递数组变量时,VarType返回8192以及数组具体类型值的和。

VBA 代码转 python vba转换器_VBA 代码转 python_07

TypeName

该函数返回具体数据类型的字符串形式。

VBA 代码转 python vba转换器_VBA 代码转 python_08

Variant和强类型

Variant可以满足所有的数据类型需求,但是性能会下降。对比确定的数据类型处理速度要慢30%左右。

返回Variant和强类型的函数

VBA语言包含许多字符串处理函数,它们有两个版本,一个返回Variant,另一个返回字符串。返回字符串的函数名以美元符号结尾。通过对比发现,返回Variant的函数执行速度,比返回字符串的函数要慢30%左右。强烈建议使用$结尾的函数。

VBA 代码转 python vba转换器_字符串_09