vba和matlab处理数据类型,VBA数据类型与转换

'1 数据类型综述

'在VBA中的数据类型有整数、文本、对象等类型。这些不同的类型有着特定的作用,在进行运算时也会占用

'不同大小的内存,所以我们在编写程序时为了提高运行效率,一般都要定义数据的类型。

'2 数据类型对程序运行的影响

'byte                       占用1个字节

'integer,boolean            占用2个字节

'long,single                占用4个字节

'Double,Currency,date       占用8个字节

'object                     占用4个字节

'string(不定长)             占用10+字符长度个字节

'String(定长)               占用字符串长度个字节

'Variant(任意数字类型)      占用16个字节

'Variant(字符串)            占用24+字符串长度个字节

Sub sss1()

Dim x As Long

Dim t

'Dim k1 As Byte     '用时0.03125s

Dim k

'Dim k1 As Integer '用时0.15625s

Dim k1 As String   '用时0.203125s

k = 1

t = Timer

For x = 1 To 1000000

k1 = k

Next x

Debug.Print Timer - t

End Sub

'1 检查是否为空

Sub s1()

Debug.Print Range('a1') = '' '判断真空,无法判断假空

Debug.Print Len(Range('a1')) = 0 '判断真空,无法判断假空

Debug.Print VBA.IsEmpty(Range('a1')) '假空时返回FALSE

Debug.Print VBA.TypeName(Range('a1').Value) '返回Empty表示为空

End Sub

Sub 速度测试()

Dim t

Dim x As Long

t = Timer

For x = 1 To 100000

'If Range('a1') = '' Then '用时0.81

' If Len(Range('a1')) = 0 Then '0.84

' If VBA.IsEmpty(Range('a1')) Then '速度 0.79

'If VBA.TypeName(Range('a1').Value) = Empty Then '0.84

End If

Next x

Debug.Print Timer - t

End Sub

'2 检查是否为数字

Sub s2()

Debug.Print VBA.IsNumeric(Range('a1'))

Debug.Print Application.WorksheetFunction.IsNumber(Range('A1'))

Debug.Print VBA.TypeName(Range('A1').Value)

' Debug.Print Range('a1').Value Like '#' '判断一位整数

' Debug.Print Range('a1') Like '*#*' '判断是否包含数字

End Sub

Sub 速度测试2()

Dim t

Dim x As Long

t = Timer

For x = 1 To 100000

'If VBA.IsNumeric(Range('a1')) Then '用时0 0.79

'If Application.WorksheetFunction.IsNumber(Range('A1')) Then '0.9218

'If VBA.TypeName(Range('A1').Value) = 'Double' Then '速度 0.84

End If

Next x

Debug.Print Timer - t

End Sub

'3 检查是否为文本

Sub t3()

Debug.Print Application.IsText(Range('a1'))

Debug.Print 'B' Like '[A-Za-z]' '判断是否为字母

Debug.Print Len(Range('a1'))

Debug.Print Range('a1') Like '*[一-龥]*' '判断字符串中是否包含汉字

End Sub

'4 判断结果是否为错误值

Sub s4()

Debug.Print VBA.IsError(Range('a1'))

Debug.Print TypeName(Range('a1').Value)

End Sub

'5 判断是否为数组

Sub s5()

Dim arr

arr = Range('A1:A2')

Erase arr

Debug.Print VBA.IsArray(arr)

End Sub

'6 判断是否为日期

Sub s6()

Debug.Print VBA.IsDate(Range('a2'))

End Sub

'一、类型转换函数:CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar

'上述函数是把表达式转换成相对应的数字类型,比如clng转换成长整型,cstr转换成文本型

Sub ss1()

Dim s As Integer

s = 2334

MsgBox 截取(CStr(s)) '因为自定义函数参数要求是文本类型,而s是数值类型,所以需要用cstr转换成文本类型

End Sub

Function 截取(x As String)

截取 = Left(x, 2)

End Function

Sub ss2()

Debug.Print 1 + True 'CInt(1 = 1)

End Sub

'二、Format函数

'format函数用法等同于工作表中的text函数,可以格式化显示数字或文本

Sub ss3()

Dim n, n1

n = 234.3372

n1 = 41105

Debug.Print Format(n, '0.00')

Debug.Print Format(n, '0')

Debug.Print Format(n, '\价格\:0.00')

Debug.Print Format(n1, 'yyyy-mm-dd')

End Sub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值