考虑下面的ArrayList:
Dim myAL As New ArrayList()
myAL.Add("The")
myAL.Add("quick")
myAL.Add("brown")
myAL.Add("fox")
myAL.Add("jumped")
myAL.Add("over")
myAL.Add("the")
myAL.Add("lazy")
myAL.Add("dog")
那么现在我们可以将其值水平设置为Excel范围吗?或者在此之前我们需要执行任何转换?
CODE
Option Explicit
Dim myQueue,i
Set myQueue = CreateObject("System.Collections.ArrayList")
'Dim Set Dic = CreateObject("Scripting.Dictionary
myQueue.Add("jumped")
myQueue.Add("over")
myQueue.Add("")
myQueue.Add("")
myQueue.Add("dog")
myQueue.Add("Cat")
i=0
Do While myQueue.Count > i
MsgBox(myQueue(i))
i=i+1
Loop
MsgBox("Capacity=" & myQueue.Capacity & "Count:" & myQueue.Count)
myQueue.Remove("dog")
MsgBox("Capacity=" & myQueue.Capacity & "Count:" & myQueue.Count)
i=0
Do While myQueue.Count > i
MsgBox(myQueue(i))
i=i+1
Loop
当我们执行任何删除操作时,ArrayList的大小是否会像字典对象一样自动调整,或者我们需要使用任何(Re)Dim
语句来处理大小?
谢谢,
答案 0 :(得分:1)
首先,您需要将ArrayList设置为数组:
listArray = myAl.ToArray()
然后水平粘贴:
Range("A1").Resize(, UBound(listArray, 1) + 1) = listArray
垂直粘贴:
Range("A1").Resize(UBound(listArray, 1) + 1) = Application.Transpose(listArray)
使用Remove / RemoveRange删除项目时,可以调用.Count
属性以获取更新的数组大小。 arraylist上没有Ubound / LBound。