将值从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