Ho lavorato con VBA in Excel e recentemente ho iniziato a lavorare con l'oggetto Scripting.Dictionary. Fino ad oggi non avevo incontrato problemi importanti.
Fondamentalmente sto cercando di popolare una listbox coni valori chiave di un dizionario, quindi aggiungere un altro valore alla casella di riepilogo. Ciò comporta che il valore non solo venga aggiunto alla casella di riepilogo, ma anche al dizionario come chiave. Ho tentato di copiare i valori dall'array dict.keys () in un array completamente separato, ma ho ancora lo stesso problema. Presumo che questo sia un problema di byref, ma devo ancora trovare una soluzione. Se qualcuno ha qualche idea che sarebbe fantastica.
Private Sub Setup_settingLst()
"Set Settings listbox items
"On Error GoTo ErrorExit
Dim list_ary() As Variant
Dim tmp As Variant
Dim i As Integer
settingLst.Clear
settingLst.Value = "-Select Setting-"
i = 0
tmp = tmp_dict.Keys()
If tmp_dict.Count > 1 Then
ReDim list_ary(0 To tmp_dict.Count)
For i = 0 To UBound(tmp)
list_ary(i) = tmp(i)
Next i
list_ary(tmp_dict.Count) = "Back"
Else
ReDim list_ary(0 To tmp_dict.Count - 1)
For i = 0 To UBound(tmp)
list_ary(i) = tmp(i)
Next i
End If
settingLst.List = list_ary
Erase list_ary
Exit Sub
ErrorExit:
End Sub
risposte:
1 per risposta № 1Questo sembra funzionare
Private Sub UserForm_Click()
Dim dcValues As Scripting.Dictionary
Me.ListBox1.Clear
Set dcValues = FillDictionary
Me.ListBox1.List = dcValues.Keys
Me.ListBox1.AddItem "Back"
End Sub