重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

皆様にいつもご指導いただきありがとうございます。
エクセルでVBAを使えるようになり、仕事もはかどるように
なってきており、誠に感謝しております。
今回ご質問させていただく件なのですが、
最近は多次元(主に2次元又は3次元)の配列を用いて
VBAを作ったりすることがあるのですが、そこで疑問といいますか
大丈夫なのかな?と心配になることがあります。
と言うのは
2次元で配列を格納した後、PF使用量を見ると増えたままに
なっているので、PCの処理能力に影響していくるのではと
思っております。
例えば、セルに
 A B C D E F G H I J 
1 1 2 3 4 5 6 7 8 9 10

9 81 82 83 84 85 86 87 88 89 90

と入力されているセルに
下記のVBAをVBAを動かすと20MBほどPF使用量が増加したまま
になっております。
初期化を行っていても、PF使用量が増えたままなので、
大丈夫なのかな?と思っております。
今後とも配列を用いてVBAを記述していく事が多くなると
思いますので、その辺りの注意点などあれば、ご指導いただければ
と思っております。宜しくお願いいたします。

Sub 配列テスト()
Dim testData() As Variant
testData = Worksheets("Sheet1").Cell.(1,1).CurrentRegion.Value
Erase testData
End Sub
また、PF使用量と言うもの自体も正確に理解しきれていない
部分も多くありますので、的を得た質問になっていないかも
しれませんが、その辺りははご了承くださいませ。

A 回答 (1件)

> 初期化を行っていても、PF使用量が増えたままなので、


> 大丈夫なのかな?と思っております。

PF使用量...というのは、ページングファイルのことですか?
詳しくありませんが、PF は OS か アプリ側で管理されているものでは
ないかと。つまり、VBA の範疇ではないのでは?

配列は Erase か、Redim Hoge(0) でクリアできますので、VBA では、
それ以上のご心配は無用かと思います。PF については不要になれば、
OS がいずれ自動破棄するでしょうし。

> 今後とも配列を用いてVBAを記述していく事が多くなると
> 思いますので、その辺りの注意点などあれば

「その辺り」とは「どの辺り」なのでしょうか^^?

大量のデータを配列で扱う場合は、データ全体を一度に読み込まないで、
何回かに分割処理します。例えば、100万件のデータなら、一度に
100万件をオンメモリにして、メモリを食いつぶすより、1万件×100回の
処理にした方が全体的なパフォーマンスが向上します。

 # メモリが不足するとスワップが発生して著しく遅くなりますよ

...こんな Tips 的な内容のことですか?

もう少し、具体的な事例を挙げてもらった方が、回答し易いと思います。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
その後、いろいろ自分でテストしていたのですが、
どうも、自分の勘違いのような感じでした。
お騒がせいたしました。
また
>何回かに分割処理します。例えば、100万件のデータなら、一度に
>100万件をオンメモリにして、メモリを食いつぶすより、1万件×100回の
>処理にした方が全体的なパフォーマンスが向上します。
につきましては、とても参考になりました。
ありがとうございます。

お礼日時:2007/10/21 08:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!