Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10072 / 13644 ツリー ←次へ | 前へ→

【23840】配列にデータを取り込む ささ 05/4/5(火) 17:18 質問[未読]
【23842】Re:配列にデータを取り込む ウッシ 05/4/5(火) 17:30 回答[未読]
【23868】Re:配列にデータを取り込む ささ 05/4/6(水) 9:08 お礼[未読]
【23870】Re:配列にデータを取り込む ウッシ 05/4/6(水) 9:29 回答[未読]
【23873】Re:配列にデータを取り込む ささ 05/4/6(水) 11:17 発言[未読]
【23874】Re:配列にデータを取り込む ウッシ 05/4/6(水) 11:27 発言[未読]

【23840】配列にデータを取り込む
質問  ささ  - 05/4/5(火) 17:18 -

引用なし
パスワード
   いつもお世話になっております

ある範囲のセルデータを
ある配列に一気に取り込むことができるか
教えて下さい

配列を貼り付けることはできるのですがその逆をしたいのです

よろしくお願いします

【23842】Re:配列にデータを取り込む
回答  ウッシ  - 05/4/5(火) 17:30 -

引用なし
パスワード
   こんにちは

Dim v As Variant
v = Range("A1:D5").Value

で、「v」は2次元配列になりますよ。

【23868】Re:配列にデータを取り込む
お礼  ささ  - 05/4/6(水) 9:08 -

引用なし
パスワード
   ウッシ さん有難う御座いました

Dim v(1) As Variant
v(1) = Range("A1:D5").Value
にすれば
配列の中に2次配列として取り込める
ということですよね
そく使わせて頂きます


▼ウッシ さん:
>こんにちは
>
>Dim v As Variant
>v = Range("A1:D5").Value
>
>で、「v」は2次元配列になりますよ。

【23870】Re:配列にデータを取り込む
回答  ウッシ  - 05/4/6(水) 9:29 -

引用なし
パスワード
   こんにちは

▼ささ さん:
>ウッシ さん有難う御座いました
>
>Dim v(1) As Variant
>v(1) = Range("A1:D5").Value
>にすれば
>配列の中に2次配列として取り込める
>ということですよね
>そく使わせて頂きます

違いますよ。

v(1)にしてしまうと「Option Base 1」を指定してない場合は、V(0)が空で
v(1)の中に、V(1)(0, 0)〜
のようにセル範囲の値が配列として取り込まれてしまいます。

Sub test()
  Dim r As Range
  Dim v As Variant
  Dim i As Long
  Dim j As Long
  Dim k As Long
  '準備
  For Each r In Range("A1:D5")
    r.Value = i
    i = i + 1
  Next
  '一気に取り込み
  v = Range("A1:D5").Value
  '確認
  For j = LBound(v, 1) To UBound(v, 1)
    For k = LBound(v, 2) To UBound(v, 2)
      Debug.Print v(j, k)
    Next
  Next

End Sub

【23873】Re:配列にデータを取り込む
発言  ささ  - 05/4/6(水) 11:17 -

引用なし
パスワード
   ▼ウッシ さん:
  すみません言葉足らずでした
  v(1) に 1つ目の範囲のを二次配列で取り込み 
  v(2) に 2つ目の範囲のを二次配列で取り込み
  というふうに次々と取り込みたかった
  という意味でした


>>Dim v(1) As Variant
>>v(1) = Range("A1:D5").Value
>>にすれば
>>配列の中に2次配列として取り込める
>>ということですよね
>>そく使わせて頂きます

【23874】Re:配列にデータを取り込む
発言  ウッシ  - 05/4/6(水) 11:27 -

引用なし
パスワード
   こんにちは

▼ささ さん:
>  v(1) に 1つ目の範囲のを二次配列で取り込み 
>  v(2) に 2つ目の範囲のを二次配列で取り込み
>  というふうに次々と取り込みたかった
>  という意味でした

それが目的でしたか。

では、「Option Base 1」かどうかだけ気を付けて下さい。

「Option Base 1」の設定が無ければ
Dim v(1) As Variant
は、
V(0)、V(1)という事になりますけど、
セル範囲を取り込んだ2次配列は「Option Base 1」の設定に関わらず
要素の最小インデックスは「1」になります。

10072 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free