我们是否可以像普通1D数组一样将ArrayList分配给Excel范围?
考虑以下ArrayList:我们是否可以像普通1D数组一样将ArrayList分配给Excel范围?,excel,vbscript,wsh,vba,Excel,Vbscript,Wsh,Vba,考虑以下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") 那么现在我们可以水平地将其值
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范围吗?或者在这样做之前,我们需要执行任何转换
代码
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大小是否会像dictionary对象一样自动调整,或者我们需要使用任何(Re)Dim
语句来处理大小
谢谢,首先,您需要将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。请查看我描述的最后一部分好吗?因此,在删除后,它是像字典键一样连续的数组,还是删除的单元格将保留为空白?它将是连续的。如果您删除一个元素,所有其他元素都将重新定位(如果合适)。然后它的大小将正确减小,如果我们删除,并且如果添加,则数组的大小将自动增大。对吗?语句“myAL.Add”(“”)也是有效的语句吗?或者这样的元素将被删除?当我有意添加“
以满足任何目的时,Arraylist
对象将如何处理此类情况?