VB.NET гораздо более строго типизирован , чем VBA.следовательно, Dictionary
в VB.NET должно быть установлено с типом данных ключа и значением.обратите внимание, что ключи должны быть уникальными значениями.Вот небольшой пример:
Sub Main()
' key and value data types (of T) must be passed as parameters to the dictionary constructor '
Dim myDict As New Dictionary(Of Int16, Long)
' add to dictionary
For i = 1 To 20
myDict.Add(i, 7)
Next
' populate all KeyValuePairs from dictionary '
For Each itm As KeyValuePair(Of Int16, Long) In myDict
Console.WriteLine("Key: {0} Value: {1}", itm.Key, itm.Value)
Next
' find value by key '
Console.WriteLine("value of key that has a value of 2: {0}", myDict(2))
End Sub
Что касается вашего второго вопроса, то за кулисами VBA и VB.NET находятся два совершенно разных языка.несмотря на то, что они имеют некоторое сходство в синтаксисе, они компилируют / интерпретируют абсолютно по-разному, следовательно, преобразование должно быть сделано программистом и без какого-либо автоматического инструмента (и, насколько я знаю, тамтакого нет, и даже если бы существовал, я бы не стал доверять его качеству).
Более того, VB.NET работает на .NET framework и переведен в MCIL , конкурирующий с VBA, который компилируется в P-Code :
Из Википедии:
Код, написанный на VBA, скомпилирован в Microsoft P-Code (упакованный код), проприетарный промежуточный язык, на котором размещаются приложения (Access, Excel), Word, Outlook и PowerPoint) сохраняются в виде отдельного потока в файлах структурированного хранилища COM ...