我的VBA代码有什么问题(我收到运行时错误9)

时间:2014-01-31 16:00:54

标签: access-vba

我环顾四周,发现“运行时错误9下标超出范围”错误通常与数组有关。但是,我不确定如何解释我发现的最适合我的代码的答案。

我有一个简单的函数,我写的是从字段中提取名字和姓氏,然后我发现该字段中有一些Null并试图通过从String更改为Variant decleration来补偿。

我已经让这个工作没有类似代码的错误......但不是这个代码。

我的代码如下:

    Function FLastName(ByVal lnIn As Variant) As Variant
    Dim astrFullName() As String
    If IsNull(lnIn) Then
        FLastName = Null
    Else
        ReDim astrFullName(2) 'This is a new concept to me... not sure if I really need this
        astrFullName = Split(lnIn, ",")
        FLastName = astrFullName(0)

    End If
End Function

提前感谢您的见解和帮助。

编辑: 我发现问题是数组不喜欢某些名称字段中的Null值...我认为以下行会解决这个问题:

If IsNull(lnIn) Then
    FLastName = Null

但显然我错了。
有人对我到目前为止发现的东西有一些建议吗?

2 个答案:

答案 0 :(得分:0)

你真的不需要ReDim ......而你甚至不需要Dim作为数组。

Function FLastName(ByVal lnIn As Variant) As Variant
    Dim astrFullName
    If IsNull(lnIn) Then
        FLastName = Null
    Else
        astrFullName = Split(lnIn, ",")
        FLastName = astrFullName(0)
    End If
End Function

PS:假设lnIn包含逗号分隔的字符串......否则你可能需要检查。

答案 1 :(得分:0)

我找到了答案!

Allen Browne(非常棒)在他的网站上有一个“ParseWord”功能,可以完成我需要完成的任务。

可在此处找到:http://allenbrowne.com/func-10.html