|
▼T.K さん:
>全解説を読んで、非常に分かりやすかったです、
>>'------------------------------------------------------- (code)
>>> For i = 1 To UBound(v)
>>> If Not dic.Exists(v(i, 1)) Then
>>> Set dic(v(i, 1)) = _
>>> CreateObject("Scripting.Dictionary")
>>> End If
>>> dic(v(i, 1))(v(i, 4)) = Array(v(i, 2), v(i, 3))
>>> Next
>>'-----------------------------------------------------------
>上記の部分で、
>Set dic(v(i, 1)) = _
> CreateObject("Scripting.Dictionary")
>で = _のこのアンダーバーはdicにdicを入れる際の仕様ですか?dicにitemを入れるときは特に_が必要でないと他の例をみると思ったので。
【72632】------------------------------------------------------
> ● _ は 直前の半角スペースといっしょになって、単に改行している
> ところです。ですから
>> Set dic(v(i, 1)) = _
>> CreateObject("Scripting.Dictionary")
>は 単に
> Set dic(v(i, 1)) = CreateObject("Scripting.Dictionary")
>という一行を(一行にすると掲示板上で強制改行されて読みにくくなる
>恐れがあるので) _を使って改行した、ということです。
>>最後に メモリ内のvv配列をシートの(2行目,4列目)以降に貼り
>>付けます.
>> ↓範囲r内の 2行目4列目のセルのこと
>>> r.Item(2, 4).Resize(UBound(vv)).Value = vv
>> ↑vvの最大要素数で 3 が返る
>r.Item(2, 4)は範囲r内の 2行目4列目のセルのことというのは分かります。
> ここから貼りつける、ただその後の.Resize(UBound(vv)).Value = vv
> についていまいち分かりません、
> なぜResizeするのか?
> 結果として、2行目4列目からvvの値を貼り付けていくという事なんだと
> 理解しているのですが、
単に
r.Item(2, 4).Value = vv
とやっただけだと、配列vv の行数が 1以上あっても、
r.Item(2, 4) という単一セルに配列vv の最初の要素が貼り付け
られるだけです。
配列vv の要素数が3 だったら、
r.Item(2, 4).Resize(3).Value = vv
としないと3行分貼り付きません。
一般に、
>>> r.Item(2, 4).Resize(UBound(vv)).Value = vv
>> ↑vvの要素数
としないと、複数要素が貼り付けられません。
|
|