繁体   English   中英

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

[英]What's wrong with my VBA code (I'm getting runtime error 9)

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

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

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

我的代码如下:

    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

但显然我错了。
任何人都对我迄今为止发现的内容有一些建议?

你真的不需要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 将包含一个逗号分隔的字符串......否则你可能需要检查。

我找到了答案!

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

可以在这里找到: http : //allenbrowne.com/func-10.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM