Excel VBA質問箱 IV

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

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


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

【57010】配列変数はなぜ、Integer型ではダメ? 勉強中さっち 08/7/17(木) 13:22 質問[未読]
【57011】Re:配列変数はなぜ、Integer型ではダメ? kanabun 08/7/17(木) 13:44 発言[未読]
【57039】Re:配列変数はなぜ、Integer型ではダメ? 勉強中さっち 08/7/18(金) 12:53 お礼[未読]
【57016】Re:配列変数はなぜ、Integer型ではダメ? neptune 08/7/17(木) 14:54 発言[未読]
【57038】Re:配列変数はなぜ、Integer型ではダメ? 勉強中さっち 08/7/18(金) 12:50 お礼[未読]

【57010】配列変数はなぜ、Integer型ではダメ?
質問  勉強中さっち  - 08/7/17(木) 13:22 -

引用なし
パスワード
   ご質問させてください。
Dim A(7,3) As currency 
Dim B(7,1) As currency
Dim i As Integer
Dim AA As Integer
Dim AB As Integer



Dim AF As Integer

    For i = 0 To 7
      A(i, 0) = AA(1, i + 1)
      A(i, 1) = AB(1, i + 1)
      A(i, 2) = AC(1, i + 1)
      A(i, 3) = AD(1, i + 1)
      B(i, 0) = AE(1, i + 1)
      B(i, 1) = AF(1, i + 1)
    Next i

プログラム中に上記のような記述があります。
AA〜AFをVariant型で宣言するとうまくいくのですが、
Integer型だとコンパイルエラーとなり、配列がありませんとなります。

なぜ?
ご教示ください。

ちなみに演算子を使用するようなプログラムの場合などは、
極力、Integerなどよりcurrencyの方が良いと聞きました。
あってますか?

【57011】Re:配列変数はなぜ、Integer型ではダメ?
発言  kanabun  - 08/7/17(木) 13:44 -

引用なし
パスワード
   ▼勉強中さっち さん:
>ご質問させてください。
ご自身の質問に「ご」は要らないですよ(^^

>AA〜AFをVariant型で宣言するとうまくいくのですが、
>Integer型だとコンパイルエラーとなり、配列がありませんとなります。
>
>なぜ?

配列として宣言してないからです。

↓のように、
>Dim A(7,3) As currency 
>Dim B(7,1) As currency

>AA〜AFを
配列として宣言すれば、何の問題もありません。

'--- Integer型配列の宣言
Dim AB(1 to 1, 1 to 8) As Integer
以下同様
 :
 :

'--- 配列の初期化
AB(1, 1) = 0
AB(1, 2) = 100
AB(1, 3) = 1000
:
:


> AA〜AFをVariant型で宣言するとうまくいくのですが
Variant型ってのは データ型は なんでもござれの型 で、その「なんでも」の
なかに 「配列」という型も含んでいるからです。
ただし、データ型は指定できませんから、メモリ喰いで効率よくないですよ
ただし、
セル範囲の値を一括配列に入れようとするときには
Dim AA As Variant
としておいて
  AA = Range("A1:B100").Value
とすると、値が 配列化されたAAに入るので 便利ですけど(^^

【57016】Re:配列変数はなぜ、Integer型ではダメ?
発言  neptune  - 08/7/17(木) 14:54 -

引用なし
パスワード
   ▼勉強中さっち さん:
こんにちは

>ちなみに演算子を使用するようなプログラムの場合などは、
>極力、Integerなどよりcurrencyの方が良いと聞きました。
>あってますか?
ここが判りやすいかな?
h tp://www.sdls.jp/~barista/tech/vba/g0.html

ちなみに、私は整数型ならLong型を使用するのでInteger型は使いません。
数値の範囲はカバーするし、メモリの節約にもならないし、処理速度も
殆ど同じ?と思うし(どちらかと言うとLong型が速い筈)

【57038】Re:配列変数はなぜ、Integer型ではダメ?
お礼  勉強中さっち  - 08/7/18(金) 12:50 -

引用なし
パスワード
   ▼neptune さん:
ありがとうございます。

参考にさせて頂きます。

【57039】Re:配列変数はなぜ、Integer型ではダメ?
お礼  勉強中さっち  - 08/7/18(金) 12:53 -

引用なし
パスワード
   ▼kanabun様

毎度毎度ありがとうございます。

大変よく理解できました。

参考にさせて頂きます。

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