vba - 如何将变体传递给双数组 VBA?
问题描述
我的想法是创建一个函数来传递这样的双数组:
Function pass(a() As Double, b() as double) As Boolean
Dim i As Integer, j As Integer
ReDim a(0 To UBound(b, 1), 0 To UBound(b, 2))
For i = 0 To UBound(a, 1)
For j = 0 To UBound(a, 2)
a(i, j) = b(i, j)
Next
Next
End Function
这样人们就可以使用:
pass(a,b)
然后a = b。
a=b
不起作用..(哦,天哪,我想念matlab ..)
好的,回到问题:
这适用于两个双数组,但如果我得到一个变体,并且当我使用它时,我可以获得一个变体,这不起作用。那么有没有将变量值传递给双数组的解决方案?数据的结构类似于双精度数组,但没有 double() 类型。
解决方案
为了解决这个问题,我将删除参数的类型。
Sub test()
Dim VarArry(0 To 4, 0 To 4) As Variant
Dim DblArry(0 To 4, 0 To 4) As Double
Dim VarAssing() As Variant
Dim DblAssing() As Double
Dim c As Boolean
VarArry(0, 1) = 34
DblArry(0, 1) = 34
c = pass(VarAssing, VarArry)
Debug.Print (TypeName(VarAssing))
Debug.Print (VarAssing(0, 1))
c = pass(VarAssing, DblArry)
Debug.Print (TypeName(VarAssing))
Debug.Print (VarAssing(0, 1))
c = pass(DblAssing, VarArry)
Debug.Print (TypeName(DblAssing))
Debug.Print (VarAssing(0, 1))
c = pass(DblAssing, DblArry)
Debug.Print (TypeName(DblAssing))
Debug.Print (VarAssing(0, 1))
End Sub
Function pass(a, b) As Boolean
Dim i As Integer, j As Integer
ReDim a(0 To UBound(b, 1), 0 To UBound(b, 2))
For i = 0 To UBound(a, 1)
For j = 0 To UBound(a, 2)
a(i, j) = b(i, j)
Next
Next
End Function
输出如下
Variant()
34
Variant()
34
Double()
34
Double()
34
推荐阅读
- objective-c - AFNetworking ElfSundae UIWebView-Patch
- c++ - QuadTree的中序遍历
- jquery - jquery datepicker 排除除周二和周五以外的所有日期,并同时排除选定日期
- javascript - 如何优化 jQuery tag:contains() 选择器?
- python - 如何在 for 循环中强制执行多个 QComboBox 中的任何一个的最小索引?
- postgresql - Docker-compose:容器未运行
- android - Firebase 远程配置重叠条件组
- php - PHP JQuery 表单未插入 SQL Server 数据库
- python - 在 Jupyter Notebook 中消失的情节?
- javascript - 处理 Ajax 响应