arrays - 将值插入数组时 VBA 函数失败

标签 arrays excel vba

我完全不明白为什么这没有返回值。这组函数应该返回String中所有ASCII值SUMStringNumber 数组 正确构建,并且 SUM 函数Array 上工作,但是当它尝试分配时将求和值添加到返回变量中,则失败。

“失败”是指代码不会单步执行求和行,并且函数将 #VALUE! 返回到工作表。其他所有内容都会在立即窗口中检查,并正确逐步执行直到最后一行。如有任何建议,我们将不胜感激。

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”、“”。也就是说,末尾有一个空字符串元素。这无法转换为 ascii 数字,因此会导致错误。

一个简单的解决方案是跳过最后一个元素:

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

我怀疑这个问题(额外的元素)与 Unicode 的使用有关,但我还没有对此进行调查。

关于arrays - 将值插入数组时 VBA 函数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23743457/

相关文章:

VBA 宏将 SQL 查询保存在 csv 文件中

c - 数组在初始化时是什么样子的

c++ - 我可以用指针创建数组变量吗?如何?

ios - NSMutableArray 中的 __NSCFString 在分配它的函数之外变为 nil

excel - 如何在 Excel 中显示正在运行的时钟?

excel - 将数组中的单词匹配为字符串

excel - 我需要复制多张纸中的特定范围并将它们粘贴到最后一张纸上

java - 二维数组越界异常

excel - 如何从行、列到 Excel A1 表示法?

excel - 为什么 Excel VBA 代码在某些机器上运行速度慢 2000 倍?