Dann würde ich mir die einzelnen Einträge auseinanderdröseln, etwa so (ohne Anspruch auf korrekte Syntax und ohne Errorhandling)
Dim tmpwerte As Variant
Dim personen List As String
Forall a in array
tmpwerte = Split (a, "~")
REM
Dann ist beim ersten Eintrag
tmpwerte (0) = "Person A"
tmpwerte (1) = "Prüfer"
tmpwerte (2) = "True"
tmpwerte (3) = "123"
END REM
personen (tmpwerte (0) & "~" & tmpwerte (1)) = tmpwerte (3)
End Forall
Bei einem Inhalt in array von
Person A~Prüfer~True~123
Person A~Prüfer~False~456
Person B~Freigeber~True~222
Person B~Freigeber~False~333
Person C~Letzter Freigeber~True~888
sieht die Liste personen nach Duchlauf des obigen Scriptes so aus:
personen ("Person A~Prüfer") = "456"
personen ("Person B~Freigeber") = "333"
personen ("Person C~Letzer Freigeber") = "888"
Wenn Du es etwas anders haben willst (da ich zugeben muss, dass ich nicht wirklich verstanden habe, wie Du genau was herausfiltern willst), kannst Du Dir die Schlüssel und die Werte entsprechend anders zusammenbauen. Entscheidend ist, dass Du in der Liste die einzelnen Elemente mit ihrem Schlüssel ansprichst, im Gegensatz zum Array, wo Du die Nummer des Elements benötigst. Sobald ein Schlüssel erneut auftritt, wird das Element überschrieben. Deshalb gewinnt so die letzte UNID des Schlüssels (z.B. Scchlüssel = "Person A~Prüfer", UNID erst "123", dann überschrieben durch "456").