Передача массива byref не редактирует исходный массив - PullRequest
2 голосов
/ 15 июля 2009

Я пытаюсь написать подпрограмму в 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 ]

11 голосов
/ 15 июля 2009

Ваш массив может быть по ссылке, но element нет. Выполните итерацию по индексу и установите строку обратно в массив, как только вы им манипулируете.

3 голосов
/ 15 июля 2009

Вы создаете новую переменную "element" и не сохраняете ее обратно в string_array, поэтому она не меняется.

2 голосов
/ 15 июля 2009

Мой VB немного заржавел, но быстрый поиск в Google показал что-то вроде этого:

Dim i As Integer
For i = LBound(string_array) To UBound(string_array)
   string_array(i) = Replace$(string_array(i), Chr(34), "")
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...