将值从Active Directory填充到VBA中的数组

我的代码定义如下:

Dim objGroups As Object Dim arrMemberDN As Variant Dim arrList() As Variant Dim i As Integer Set objGroups = GetObject("LDAP://" & strGroupDN) For Each arrMemberDN In objGroups.member arrMemberDN = Mid(arrMemberDN, 4, 7) arrList(i) = arrMemberDN i = i + 1 Next arrMemberDN 

但我总是得到的

运行时错误9:索引超出范围

arrList(i) = arrMemberDN

我怎么能填充我的数组arrList与来自arrMemberDN值?

首先你必须为你的数组创build维度,这里是一维数组。

然后你Redim Preserve你的内容。

注意: Redim Preserve只能用于修改最后一个维度!

 Dim objGroups As Object Dim arrMemberDN As Variant Dim arrList() As Variant ReDim arrList(1 To 1) Set objGroups = GetObject("LDAP://" & strGroupDN) For Each arrMemberDN In objGroups.member arrMemberDN = Mid(arrMemberDN, 4, 7) arrList(UBound(arrList)) = arrMemberDN ReDim Preserve arrList(LBound(arrList) To UBound(arrList) + 1) Next arrMemberDN ReDim Preserve arrList(LBound(arrList) To UBound(arrList) - 1) 

join@ R3uK的build议。 你很近,如果你可以在开始你的循环之前得到objGroups中的对象的数量,你可以设置arrList的限制一次,这会更快。

 Dim objGroups As Object Dim arrMemberDN As Variant Dim arrList() As Variant Dim i As Integer Set objGroups = GetObject("LDAP://" & strGroupDN) ReDim arrList(1 to 'count of items in objGroups) For Each arrMemberDN In objGroups.member i = i + 1 arrMemberDN = Mid(arrMemberDN, 4, 7) arrList(i) = arrMemberDN Next arrMemberDN