• ベストアンサー

エクセルのVBAについてですが

エクセルのVBAについてですが A1で、変数aを0~10まで変更させるとします。 そのとき、たとえばA2にaに対応したyが出力されるとします。 (つまり、a=0のときy=y0,a=1のときy=y1、a=2のときy=y2・・・) このときB1,B2,B3にy0,y1,y2と順番に出力させる方法はありますか?

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim i As Integer For i = 0 To 10 Range("A1").Value = i Range("B" & i + 1).Value = Range("A2").Value Next End Sub みたいなことですか?

meltwindow
質問者

補足

ご回答ありがとうございます。 分かりづらい説明ですみません! 具体例をかかせていただきます。 y=2x+1のグラフをかきたいとします。 「A1」にxを0から10まで順番に代入させ、 「B列]にそれに対応したyを出力させたいとします。 すると私の組んだマクロでは マクロを開始するとA1のxが一瞬で0から10までかわってしまうので B列がx=10に対応したy、つまり21でB1からB11まで満たされてしまうのです。 これを A1が0のときはB1にy=1 A1が1のときはB2にy=3 A1が2のときはB2にy=5・・・ といったように出力させる方法はありますか? 簡単にいうためにこのような具体例にしただけでありますので 本当にこのようなグラフを書きたいわけではないので、 別のやり方ではなく、このやり方について方法がありましたら よろしくお願い致します。

その他の回答 (2)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

グラフのアニメーションをしたいのでしょうか?そうであれば、 A2~A11に、0~10を入れ、 B2以降に、=IF(A2<$A$1,A2*2+1,#N/A)という式を入れて、下方にコピーし、 相関図グラフを作成しておいてから、下記マクロを実行すれば良いです。 ご質問の通りに、逐次下方に値を入れ、逐次グラフのデータ範囲を設定しなおす (あるいはグラフのデータ範囲に動的な名前をつけておく)事も可能でしょうが、 下記の方法の方が簡単だと思います。お気に召さなければスルーして下さい。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub test() Dim i As Long For i = 1 To 10 Range("A1").Value = i DoEvents Sleep 2000 '2秒毎にプロット Next i End Sub

meltwindow
質問者

お礼

ご回答ありがとうございます! 本質問についてはすでに望んでいた回答が得られましたが ぐらふのアニメーションも可能なことを初めて知り、いい勉強になりました。 ありがというございました!

回答No.2

こんにちわ 下の回答のでいいと思いますが・・・ ステップbyステップで知りたいのであれば for~nextの適当なところにmsgboxをいれるといいのではないかと思います

meltwindow
質問者

お礼

すみません。 まさに一番の回答者様の仰る通りでした!! お陰さまでその問題は無事解決致しました。 本当にありがとうございました!

関連するQ&A