注意:此答案最初是由 OP Kibbee 作为自我答案编写的。但是,它写在问题的正文中,而不是作为实际的单独答案。由于OP拒绝了包括版主在内的其他用户的重复请求,要求按照网站规则重新发布,所以我自己重新发布。
在尝试了一百种不同的东西,重构了我的代码,在调试器中多次单步执行代码,甚至让一个同事调查了问题之后,我终于灵机一动,找到了答案。
在重构代码的某个时候,我更改了函数以摆脱 Value 参数,将其保留如下:
Public Function GetSomeStringValue() As String
... Code Goes here
Return Some_Multicharacter_String
End Function
但是,我忽略了删除调用函数时传入的参数:
SomeStringValue = GetSomeStringValue(Value)
编译器没有抱怨,因为它将我所做的解释为调用不带括号的函数,这是 VB6 时代的遗留功能。然后,Value 参数转换为从函数返回的字符串(又名字符数组)的数组索引。
所以我删除了参数,一切正常:
SomeStringValue = GetSomeStringValue()
我发布这个是为了让其他人在遇到问题时/如果他们遇到问题时能够识别出来,并且能够比我更快地解决它。我花了很长时间才解决,我希望我可以节省其他人一些时间。