Примечание: этот ответ изначально был написан ФП Кибби как самоответ. Тем не менее, это было написано в основной части вопроса, а не как отдельный ответ. Поскольку ОП отклонил повторные запросы других пользователей, в том числе модератора, на перепост в соответствии с правилами сайта, я сам его перепостил.
Попробовав сотню разных вещей, реорганизовав мой код, многократно пройдя по коду в отладчике и даже убедившись коллегой разобраться в проблеме, я в мгновение ока гениально нашел ответ.
В какой-то момент, когда я выполнял рефакторинг кода, я изменил функцию, чтобы избавиться от параметра Value, оставив его следующим образом:
Public Function GetSomeStringValue() As String
... Code Goes here
Return Some_Multicharacter_String
End Function
Однако я забыл удалить параметр, который передавал при вызове функции:
SomeStringValue = GetSomeStringValue(Value)
Компилятор не жаловался, потому что интерпретировал то, что я делал, как вызов функции без скобок, что является унаследованной функцией от VB6 дней. Затем параметр Value преобразуется в индекс массива строки (он же символьный массив), который был возвращен функцией.
Итак, я удалил параметр, и все заработало нормально:
SomeStringValue = GetSomeStringValue()
Я публикую это, чтобы другие люди распознали проблему, когда / если они когда-либо столкнутся с ней, и смогут решить ее намного быстрее, чем я. Мне потребовалось много времени, чтобы решить, и я надеюсь, что смогу сэкономить время другим.