Среда выполнения .net доступна для VBA (и других COM-клиентов) через mscorlib.dll.Теоретически это означает, что программист VBA может использовать классы .net.
Я использовал ArrayList для сортировки и пытался вызвать другие методы, но для IndexOf я столкнулся с проблемой.Это не займет литерал для параметра, он ожидает объект.Я подумал, что целое в штучной упаковке может сработать, но и это не удалось.
Итак, как найти буквенное число в ArrayList из VBA?
Sub Test()
Dim obj As Object
Set obj = CreateObject("System.Collections.ArrayList")
obj.Add 4
obj.Add 8
obj.Add 12
obj.Add 16
obj.Add 20
Debug.Assert obj.Count() = 5
Debug.Assert obj.Item(2) = 12
'* try a literal
Debug.Print obj.IndexOf(12) 'ERRORS err.Description=Invalid procedure call or argument
'* try a boxed integer
Dim boxedInteger As mscorlib.Int32
boxedInteger.m_value = 12
Debug.Print obj.IndexOf(boxedInteger) 'ERRORS err.Description=Invalid procedure call or argument
End Sub