|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 905738810 于 2023-2-27 11:46 编辑
以下是我个人的理解,不一定全对:
1、上图画了变体Variant类型和数组类型的区别
图中arr是Variant类型,brr是数组类型
2、arr这个Variant类型相当于一个容器可以装任何数据,当他装了一个数组后,只是装了数组的地址位置
使用arr(0)取数据时需要在arr容器里查找数组的地址位置,然后再去数组的真是位置查找数据,最终返回数据
3、brr因为声明时使用了brr()声明,所以他本身就是数组,他指向的就是数组的真是地址位置
使用brr(0)取数据时可以直接查找到数据
4、由上可以看出,Variant类型取数据是需要两步,而数组类型只需一步,所以Variant类型速度会慢于数组类型
5、arr因为有一个容器所以arr变量可以赋值任何数据,例如:
Sub test()
Dim arr() As Variant
arr = Array(1, 2, 3)
testfn arr
End Sub
Function testfn(arr As Variant)
End Function
上述代码不会报错,这也是很多人喜欢变体的原因,
但是不报错也会导致写代码时发现不出代码的bug。
6、brr是数组类型,所以必须赋值数组
Sub test()
Dim brr As Variant
brr = Array(1, 2, 3)
testfn brr
End Sub
Function testfn(brr() As Variant)
End Function
上述代码是会报错,因为类型不对,brr()不能赋值变体,需要改成统一的类型如下。
Sub test()
Dim brr() As Variant
brr = Array(1, 2, 3)
testfn brr
End Sub
Function testfn(brr() As Variant)
End Function
|
评分
-
1
查看全部评分
-
|