乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>Excel</em> VBA自定义函数的编写,自定义数组

<em>Excel</em> VBA自定义函数的编写,自定义数组

作者:乔山办公网日期:

返回目录:excel表格制作


可以在zhidao函数中定义静态类型

Static A '只能定义通用类型,否则IsEmpty 检查不出来。
If IsEmpty(A) Then '这样保证数组只赋值一次
ReDim A(5) As String
'对数组赋值操作
End If

你这个要求不能实现啊,我用了ParamArray 关键字,用来指定一个 任意元素个数 的数组
共参考:
---------
Function shuzu(ParamArray x())
Application.Volatile
Dim i, n, m, tmp
n = UBound(x) - LBound(x) + 1
If n Mod 2 <> 0 Then tmp = "#Err_x()": GoTo 1000
n = n / 2
m = LBound(x)
For i = 1 To n
tmp = tmp + x(m + i - 1) * x(m + i - 1 + n)
Next
1000:
shuzu = tmp
End Function
-----------
输入公式的时7a686964616fe58685e5aeb9332候,需要 成对 的元素,套用你的公式如下:
=shuzu((K5,L5,M7,N9),(M13,L15,K13,M17))
可以输入任意 成对的 元素,比如使用10个参数:
=shuzu((K5,L5,M7,N9,M10),(M13,L15,K13,M17,N20))
'动态数组的一个例子。
Private Sub Command1_Click()
Dim a() As Integer'定义一7a64e4b893e5b19e362个可变的数组
Dim n As Integer
n = 10
ReDim a(n) As Integer'重新定义大小
For i = LBound(a) To UBound(a)'用这两函数获得数据的上标和下标
a(i) = i + 1
Print i
Next
Print "-------------------"
ReDim Preserve a(n + 2) As Integer'加Preserve维持原始数据不变,如果没有这个关键词,所有元素都将变成0
a(n + 1) = 11
a(n + 2) = 12
For i = LBound(a) To UBound(a)
a(i) = i + 1
Print i
Next
End Sub
打开数据表后的行列数可以用下面两句得到:
ActiveSheet.UsedRange.Rows.Count
ActiveSheet.UsedRange.Columns.Count

只能传 单元格然后转数组。如下 

Function MyTest(rng As Range)
    Dim arr() As Variant
   Set arr = rng.Value
    MyTest = UBound(arr)
End Function

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网