我环顾四周,发现“运行时错误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
但显然我错了。
有人对我到目前为止发现的东西有一些建议吗?
答案 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”功能,可以完成我需要完成的任务。