向Array中插入值时,VBA函数失败

我完全沉迷于为什么这不是一个价值。 这组functions应该返回String中所有ASCII valuesSUMStringNumber arrays正确构build, SUM function可以在Array ,但是当它尝试将返回的variables赋值给它时,它将失败。

通过“它失败”我的意思是代码不会进入总和线,函数返回#VALUE! 到工作表。 其他的东西都在immediate window检查出来,然后正确地走到最后一行。 任何build议表示赞赏。

 Private Function StringToCharArray(ByRef sIn As String) As String() StringToCharArray = Split(StrConv(sIn, vbUnicode), Chr(0)) 'provided by Fencliff at http://www.mrexcel.com/forum/excel-questions/342725-split-string-into-array.html End Function Function StringToNumber(MyString As String) As Integer Dim StringArray() As String Dim NumberArray() As Long StringArray() = StringToCharArray(MyString) ReDim NumberArray(UBound(StringArray)) For i = LBound(StringArray) To UBound(StringArray) NumberArray(i) = Asc(StringArray(i)) Next i StringToNumber = Application.WorksheetFunction.Sum(NumberArray) End Function 

使用“abc”的例子,Split获得数组“a”,“b”,“c”,“”。 也就是说,在末尾有一个空的string元素。 这不能转换为ASCII码,所以导致错误。

一个简单的解决scheme是跳过这最后一个元素:

 For i = LBound(StringArray) To UBound(StringArray) - 1 

我怀疑这个问题(多余的元素)与Unicode的使用有关,但是我没有调查过这一点。