传递数组byref不会编辑原始数组

时间:2009-07-15 15:43:17

标签: ms-access vba

我正在尝试在Access 2003中编写一个子例程,该子例程从数组中的字符串中删除所有引号字符。子例程在例程本身中成功删除了引号,但在程序返回到传递函数时则不会。我很困惑,因为它是ByRef。

如何调用:

Call removeQuotes(wbs_numbers())

和子程序本身:

'goes through a string array and removes quotes from each element in the array'
Sub removeQuotes(ByRef string_array() As String)
    For Each element In string_array()
    'chr(34) is quotation character. visual basic does not have escape characters.'
    element = Replace$(element, Chr(34), "")
    Next
End Sub

有人可以解释一下我做错了什么吗?我永远爱你!

3 个答案:

答案 0 :(得分:11)

您的数组可能是参考,但element不是。按索引迭代,并在操作后将字符串设置回数组。

答案 1 :(得分:3)

您正在创建新变量“element”,并且不会将其存储回string_array中,因此它不会更改。

答案 2 :(得分:2)

我的VB有点生疏,但谷歌的快速搜索出现了类似的内容:

Dim i As Integer
For i = LBound(string_array) To UBound(string_array)
   string_array(i) = Replace$(string_array(i), Chr(34), "")
Next