- ベストアンサー
プログラムについて
初心者の質問ですみません。 関数の読み出しについてですが、 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
- みんなの回答 (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) 質問の内容が今一つ理解出来ないので見当違いかも知れません。
その他の回答 (3)
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
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で固定になります)が、その時は補足にでもどうぞ。
お礼
ご回答ありがとうございます。 >この宣言ではiがIntegerではなくVariantになります。VBでは変数ひ>とつひとつにAsキーワードで型を指定する必要があります。 そうだったんですね。 普通に使えるから意識してなかったです。 ありがとうございます。 すみません、無理なことを質問していました。 プログラムを作る上で、どのように考えていけば 悩んでしまいます。 作り方の整理ができていないためかもしれませんが、 どのように整理すればいいのかが難しくて困ります。
- JavaJavax2
- ベストアンサー率22% (68/305)
お礼
ご回答ありがとうございます。 このサイトは見てるのですが、 まだよく分からないので質問させていただきました。
- JavaJavax2
- ベストアンサー率22% (68/305)
文章がいまいち理解できなかったけど。 そこに記述しただけじゃ読み出せないだろ。?
お礼
早速のご回答ありがとうございます。 分かりにくい文章ですみません。 このような場合どのように記述すれば良いのでしょうか? やりたいことは、iループで順次変数のデータが変わるのですが それを変数に保存し、他の関数に使用したいのです。
補足
すみません。 さらに補足させていただきます。 変数Aと変数Bに一定の関係があり、変数Aに配列a(i)を入れて、 変数Bの値を取り出した配列b(i)があります。 このとき、配列bの値を他の関数で読み出したいのです。 上手く書けず申し訳ありませんがご回答のほど よろしくお願いいたします。
お礼
ご回答ありがとうございます。 私の質問が不適切で誤ったことでした。 知らぬこととはいえ申し訳ありません。 プロシージャ間での値の引渡し方が分かっていない ためこのような質問をしてしまいました。 1つの解決方法は、広域変数(public)を読み出すことで 対応できそうということが分かりましたが、配列のデータを他の関数で読み出すコードの記述が思いつかないため質問しました。