- ベストアンサー
Ofiice 2000 マクロの質問
マクロの初心者です。 こんなこと出来るのかどうかわかりませんが、どうしてもこの方法でやりたくて、いろいろと調べましたがわかりません。 dim I For I =1 To 10 dd = "d" & I a = Range(dd) b(I) = a ←問題の項目です Next 私のやりたいことは、セルd1~d10のデータを b(1)~b(10) として取出したいのです。 これが無理なら、b1~b10 でもいいのですが、、 問題の場所で、いろいろと試したのですが どうしてもエラーになってしまいます。 それから dim というのは参考書に書いてありましたので、入れてるのですが、省略してもエラーにならないのですが、どうしてなんでしょうか? 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 参考書の項目には、何か書いてありませんでしたか? >b(1)~b(10) として取出したいのです。 これを「配列」といいます。 「配列」というのは、いくつもに分かれた入れ物で、ひとつにまとめたものです。 >dim I >For I =1 To 10 >dd = "d" & I >a = Range(dd) >b(I) = a '←問題の項目です >Next このままですと、入れ物がありませんね。 配列は、通常、0 から始りますので、 また、b(0) を空き番として b(10) とするか、 b(1 to 10) と宣言して、始めて、入れ物に入れられるようになります。 つまり、 Dim I, b(1 to 10) としてあげます。できれば、変数型を入れるとよいですね。 Dim I As Long, b(1 to 10) As Variant とします。 なお、Option Base 1 と最初に書いてから、 Dim I As Long, b(10) As Variant とすれば、配列の最初は、1となり、空き番のb(0)はなくなり、1~10になります。
その他の回答 (1)
- driverII
- ベストアンサー率27% (248/913)
Dim I as Integer For I=1 To 10 a = cells(I, 4).value b(I) = a Next I dim を入れなくてもエラーにならないのは 省略した時、Variant 型という型で定義されるからです。
お礼
早速の回答ありがとうございます。 これで組んでみたのですが、b(I)=a のところで sub 又は functionが定義されてない、とエラーになってしまうのですが どうしてなんでしょうか? 申し訳ございませんが、宜しくお願いします。
お礼
ご丁寧な説明でよくわかりました。 組んでみましたところ問題ありませんでした。 本当にありがとうございました。