• ベストアンサー

プログラムについて

初心者の質問ですみません。 関数の読み出しについてですが、 A1実施→X1となり、X1をa()に代入する。 これを数回ループする場合、aのデータを他の関数で読み出し 変数に代入したい場合どのような記述が良いでしょうか? sub test1() Dim i,X as integer Dim A(10) as integer Dim a(10) as integer For i = 0 to 10 X = A(i)+300 a(i)=X next i End sub sub test2() ※ここにどのように記載すればa(i)を読み出せますか? End sub

質問者が選んだベストアンサー

  • ベストアンサー
  • kiki_s
  • ベストアンサー率59% (147/248)
回答No.4

コードの整合性は別として。 11個の配列変数を宣言していますので、 A(0)からA(10)までと、a(0)からa(10)までの配列変数が出来ますね。 ただ、test1のコードを実行しても、 A(0)=300 A(1)=300 A(2)からA(8)も同じ300 A(9)=300 A(10)=300 a(0)からa(10)も同じ300 と、全て同じ数値になりますが・・・ 多分、エクセルVBAだと思いますが、 セルの値を変数に取得する場合、A(i)としてもセルのA(番号)にはなりません。 もし、セルの値を変数に取得するなら、下記のコードになります。 (A1からA10のセルの値を変数a(1)からa(10)に取得) Sub test()  Dim a(10) as integer  For i = 1 To 10   a(i) = Worksheets("Sheet1").Cells(i, 1).Value  Next End Sub 変数の読み出しは、 X = a(1) セルA1の値が変数Xに代入されます。 B1シートに代入(つまりA1の値をB1へ) Worksheets("Sheet1").Cells(1, 2).Value = a(1) 質問の内容が今一つ理解出来ないので見当違いかも知れません。

nosense
質問者

お礼

ご回答ありがとうございます。 私の質問が不適切で誤ったことでした。 知らぬこととはいえ申し訳ありません。 プロシージャ間での値の引渡し方が分かっていない ためこのような質問をしてしまいました。 1つの解決方法は、広域変数(public)を読み出すことで 対応できそうということが分かりましたが、配列のデータを他の関数で読み出すコードの記述が思いつかないため質問しました。

その他の回答 (3)

回答No.3

a()がtest1の中で定義されている限り、test1以外からは触れることはできません。test1の外に出してください。 また、VBでは大文字・小文字を区別しないのでa()もA()も同じ物として扱います。a()を外に出したところで、test1にA()がある限りa()には何も代入されません。 もひとつ、 Dim i,X as integer この宣言ではiがIntegerではなくVariantになります。VBでは変数ひとつひとつにAsキーワードで型を指定する必要があります。 Dim B(10) As integer Sub test1() Dim i As Integer,X As Integer Dim A(10) As Integer For i = 0 To 10 X = A(i) + 300 B(i) = X next i End Sub Sub test2() ※ここにどのように記載すればa(i)を読み出せますか? MsgBox B(0) End Sub ※コードを見る限りでは、これで解決しそうにありません(X=300で固定になります)が、その時は補足にでもどうぞ。

nosense
質問者

お礼

ご回答ありがとうございます。 >この宣言ではiがIntegerではなくVariantになります。VBでは変数ひ>とつひとつにAsキーワードで型を指定する必要があります。 そうだったんですね。 普通に使えるから意識してなかったです。 ありがとうございます。 すみません、無理なことを質問していました。 プログラムを作る上で、どのように考えていけば 悩んでしまいます。 作り方の整理ができていないためかもしれませんが、 どのように整理すればいいのかが難しくて困ります。

回答No.2
nosense
質問者

お礼

ご回答ありがとうございます。 このサイトは見てるのですが、 まだよく分からないので質問させていただきました。

回答No.1

文章がいまいち理解できなかったけど。 そこに記述しただけじゃ読み出せないだろ。?

nosense
質問者

お礼

早速のご回答ありがとうございます。 分かりにくい文章ですみません。 このような場合どのように記述すれば良いのでしょうか? やりたいことは、iループで順次変数のデータが変わるのですが それを変数に保存し、他の関数に使用したいのです。

nosense
質問者

補足

すみません。 さらに補足させていただきます。 変数Aと変数Bに一定の関係があり、変数Aに配列a(i)を入れて、 変数Bの値を取り出した配列b(i)があります。 このとき、配列bの値を他の関数で読み出したいのです。 上手く書けず申し訳ありませんがご回答のほど よろしくお願いいたします。

関連するQ&A