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

Я отправляю данные из Excel на панель мониторинга dashing.io через JSON. Данные, которые я отправляю, состоят из нескольких рядов данных, таких как

[{"Group":"Interface","progress";"10"},{"Group":"HMI","progress";"20"}]

Сейчас я использую несколько объектов словаря progress1, progress2 для хранения данных вроде:

DIM progress1 as new Dictionary
DIM progress2 as new Dictionary
progress1.add "Group", "Interface"
progress1.add "Progress", 10
progress2.add "Group", "HMI"
progress2.add "Progress", 20

И, наконец, для создания объекта JSON к одному объекту добавляются два словаря прогресса:

Dim body as new Dictionary
body.add Array(progress1, progress2)

Поскольку имеется более двух элементов прогресса, я хотел создать цикл for для добавления данных в словарь, а затем добавить этот элемент словаря в массив, такой как

for i=1 to 10
  progress.add "Group", Range(i,1)
  progress.add "progress", Range (i,2)
next i
overall_progress.add (progress)

Кажется, я добавляю объект в качестве ссылки, а не значения объекта. Если цикл запускается 10 раз, я получаю десять раз одну и ту же запись.

Есть идеи, как добавить значения словаря в массив вместо ссылки?

1 Ответ

0 голосов
/ 29 августа 2018

Создавать объекты в цикле проще, если вы используете «фабричную» функцию.

например:

Sub Tester()

    Dim body As New Collection, i As Long

    For i = 1 To 10
        body.Add Progress(Cells(i, 1), Cells(i, 2))
    Next i

End Sub

Function Progress(grp, prog) As Object
    Dim rv As New scripting.dictionary
    rv.Add "Group", grp
    rv.Add "Progress", prog
    Set Progress = rv
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...