0

以下の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のサイズは辞書オブジェクトのように自動的に調整されますか、(Re)Dimそれともステートメントを使用してサイズを処理する必要がありますか?

ありがとう、

4

1 に答える 1

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 はありません。

于 2012-12-23T10:32:02.077 に答える