Excel 如何将数组传递给函数

Excel 如何将数组传递给函数,excel,vba,Excel,Vba,我尝试将数组传递给VBA EXCEL中的函数。我找不到合适的例子 我尝试将数组传递给函数 函数内声明 我尝试将变量数组设置为variant或ByRef,但不起作用 我怎么了 Dim Retarray(1 To 6, 1 To 2) As String 这是我的阵列 然后尝试传递到函数as Smap = checkDevNo(Retarray, Right(CellArray(i, 1), 1)) 这是我的函数声明 Function checkDevNo(ByRef aaray() As

我尝试将数组传递给VBA EXCEL中的函数。我找不到合适的例子

我尝试将数组传递给函数 函数内声明 我尝试将变量数组设置为variant或ByRef,但不起作用 我怎么了

Dim Retarray(1 To 6, 1 To 2) As String  
这是我的阵列 然后尝试传递到函数as

Smap = checkDevNo(Retarray, Right(CellArray(i, 1), 1))
这是我的函数声明

Function checkDevNo(ByRef aaray() As String, aa As Character) As String

Select Case aa

Case "1"
    For j = 1 To 6
        If aaray(j, 1) = 6 Then
            checkDevNo = j
        End If
    Next j
Case "2"
    For j = 1 To 6
        If aaray(j, 1) = 7 Then

        End If
    Next j
End Select
End Function

编译错误用户定义类型未定义???

IIRC,
字符
不是VBA类型。您应该将其作为
字符串
字节
传递。在Visual Basic中,单个字符也可以存储在固定长度的字符串中(
Dim myChar As String*1
),但方法参数不支持该语法

因此,您的函数声明应该如下所示:

Function checkDevNo(ByRef aaray() As String, aa As String) As String
    ...
End Function

如果我们讨论的是Excel VBA,那么您需要执行以下操作:

Function checkDevNo(aaray As Variant, aa As String) As String

    Select Case aa

        Case "1"
            For j = 1 To 6
                If aaray(j, 1) = 6 Then
                    checkDevNo = j
                End If
            Next j
        Case "2"
            For j = 1 To 6
                If aaray(j, 1) = 7 Then

                End If
            Next j

    End Select

End Function

编辑器高亮显示单词
字符
,因为它警告未定义用户定义的类型…请注意,
ByRef
是隐式默认值:该函数的两个参数都是通过引用传递的。一个是显式的,另一个是隐式的。