使用MSCORLIB.DLL中SortedList类的Add方法时VBA编译报错
解决VBA调用.NET SortedList.Add时的“Expected: =”编译错误
错误原因
VBA对无返回值方法的调用语法与.NET原生语法存在差异:
- .NET中
SortedList.Add是无返回值的void方法,但在VBA的COM互操作环境下,该方法被识别为VBA的Sub过程。 - 若直接用括号包裹参数调用
Sub过程,VBA会默认认为你试图将该过程的返回值赋值给某个变量(但它没有返回值),因此触发“Expected: =”编译错误。
解决方案
有两种正确的调用方式:
方式1:去掉参数外的括号直接调用
' 声明SortedList对象(确保已引用mscorlib.dll) Dim mySortedList As New SortedList ' 直接调用Add方法,参数无需括号 mySortedList.Add "SampleKey", "SampleValue"
方式2:使用Call关键字配合括号调用
如果习惯带括号的写法,可通过Call关键字明确告知VBA这是调用无返回值的过程:
Dim mySortedList As New SortedList Call mySortedList.Add("SampleKey", "SampleValue")
额外注意事项
- 确认你的
SortedList类型确实来自引用的mscorlib.dll,避免与其他库中的同名类冲突。 - 你已完成.NET Framework 3.5的开启和mscorlib.dll的引用配置,这部分无需额外调整。
内容的提问来源于stack exchange,提问作者mbmast
相关产品推荐
相关产品推荐

