Excel VBA質問箱 IV

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

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


10750 / 13646 ツリー ←次へ | 前へ→

【20068】2次元配列変数の取り扱い miyake 04/11/27(土) 11:33 質問[未読]
【20071】Re:2次元配列変数の取り扱い ちゃっぴ 04/11/27(土) 12:11 回答[未読]
【20077】Re:2次元配列変数の取り扱い ichinose 04/11/27(土) 13:45 発言[未読]
【20079】Re:2次元配列変数の取り扱い miyake 04/11/27(土) 14:10 お礼[未読]

【20068】2次元配列変数の取り扱い
質問  miyake  - 04/11/27(土) 11:33 -

引用なし
パスワード
   2次元配列について質問があります。
例えば、10行、10列の 2次元配列

Dim hairetu(1 To 10, 1 To 10) As Integer

といった変数を宣言するとします。
そのhairetuの値をセルに転写する場合、

Sheet1.Range("A1:J10") = hairetu

となると思います。この場合、hairetuの値がすべてセルに転写されますが、hairetuの範囲指定をして、指定した部分だけ転写するにはどうしたらいいのでしょうか。
(ループ処理をすれば可能ですが、ループでは時間がかかるため一挙に転写したいのです。)
例えば、hairetuの1行目から5行目、1列目から5列目を転写する場合、

Sheet1.Range("A1:E5") = hairetu ?

としたいのです。
教えてください。

【20071】Re:2次元配列変数の取り扱い
回答  ちゃっぴ  - 04/11/27(土) 12:11 -

引用なし
パスワード
   >Sheet1.Range("A1:J10") = hairetu

個人的に、Propertyの省略はやめたほうがいいと思います。

Sheet1.Range("A1:J10").Value = hairetu

明示的にPropertyを指定することにより、Debugが用意になりますし、
Bugの発生確率を確実に減らすことができると思います。

> となると思います。この場合、hairetuの値がすべてセルに転写されますが、
> hairetuの範囲指定をして、指定した部分だけ転写するには
> どうしたらいいのでしょうか。

はじめから、その範囲に合うよう2次元配列を定義すればいいだけでは?
もし、必要なら、別の2次元配列を用意し、そこに値を移すという手もあります。

ちなみに、セルを個別に書き込む際、Performanceが低下するのは、
一回ごとにObjectにAccessするのが原因で、配列から配列に値を移す
場合には、結構高速ですので、それほど大きなPerformance低下を
招かきません。

【20077】Re:2次元配列変数の取り扱い
発言  ichinose  - 04/11/27(土) 13:45 -

引用なし
パスワード
   miyakeさん、ちゃっぴ さん、こんにちは。

>はじめから、その範囲に合うよう2次元配列を定義すればいいだけでは?
>もし、必要なら、別の2次元配列を用意し、そこに値を移すという手もあります。
>ちなみに、セルを個別に書き込む際、Performanceが低下するのは、
>一回ごとにObjectにAccessするのが原因で、配列から配列に値を移す
>場合には、結構高速ですので、それほど大きなPerformance低下を
>招かきません。
↑これに賛成ですが、
>例えば、hairetuの1行目から5行目、1列目から5列目を転写する場合、

ならば、

Sub test()
  Dim hairetu(1 To 10, 1 To 10)
  For idx = 1 To 10
   For jdx = 1 To 10
    hairetu(idx, jdx) = idx * 2 + jdx
    Next
   Next
  '↑サンプル作成
  Range("a1:e5").Value = hairetu()
End Sub

でOKですよ!!

【20079】Re:2次元配列変数の取り扱い
お礼  miyake  - 04/11/27(土) 14:10 -

引用なし
パスワード
   ちゃっぴ さん、ichinose さん、
ありがとうございました。参考になりました。

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