gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:45:34 25 4
gpt4 key购买 nike

我完全不明白为什么这没有返回值。这组函数应该返回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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com