Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们是否可以像普通1D数组一样将ArrayList分配给Excel范围?_Excel_Vbscript_Wsh_Vba - Fatal编程技术网

我们是否可以像普通1D数组一样将ArrayList分配给Excel范围?

我们是否可以像普通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") 那么现在我们可以水平地将其值

考虑以下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范围吗?或者在这样做之前,我们需要执行任何转换

代码

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
对象将如何处理此类情况?