Как изменить значение коллекции VBA через отдельную функцию - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь изменить некоторые значения коллекции строк внутри отдельной функции.Как я понял, коллекции обрабатываются ByRef по умолчанию при использовании их в качестве параметра функции.К сожалению, я получаю следующую ошибку при выполнении кода ниже:

Ошибка времени выполнения '424' Требуется объект

Function MyFunc1
   Dim b as Collection: Set b = New Collection
   b.Add "test1"
   b.Add "test2"
   MyFunc2 b
End Function


Private Function MyFunc2(c As Collection)
   c(1) = "hello"
End Function

edit: я нашел решение, используясловари:

Private Function MyFunc1()
    Dim b As Collection: Set b = New Collection
    b.Add "test1"
    b.Add "test2"
    Call myFunc2(b)
End Function

Private Function myFunc2(c As Collection)
    c.Remove 1
    c.Add "hello", , 1
End Function

1 Ответ

0 голосов
/ 23 октября 2018

Я думаю, вы могли бы сделать это, если хотите использовать объект словаря;

Function MyFunc1()

Dim b As New Scripting.Dictionary

   b.Add key:="1", Item:="test1"
   b.Add key:="2", Item:="test2"

   ' Example Call to update function
   Set b = updateDictWithStringValue(b, "1", "hello")

End Function

Public Function updateDictWithStringValue(d As Dictionary, key As String, value As String) As Dictionary

d.Remove key
d.Add value, key
Set updateCollectionWithStringValue = d

End Function

вам нужно включить ссылку на Microsoft Scripting Runtime

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...