第24講 各種グラフの作成
第3話 知らなくてどうしてプログラミングできてしまうの?
Private Sub CommandButton1_Click()
Dim x As Single, y As Single
Dim cn As Integer
cn = 0
For x = -9 To 9 Step 0.01
y = x * x
Cells(1 + cn, 1) = y
cn = cn + 1
Next
ActiveSheet.Shapes.AddChart2(227, xlLineMarkers, 100, 100, 200, 500).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$A$1800")
End Sub
ピンクの部分については、
私も知りませんでした。
でも、知らなくてもプログラミングできます。
では、どうやったのでしょうか。
マクロに詳しい方は、『多分〜を使ったんだろう』と予想できますよね。
そうです。〜を使ったのです。
そして、〜から学んだのです。
解答は、30行下に示します。
〜はマクロの記録です。
では、皆さんご一緒にやってみましょう。
Dim x As Single, y As Single
Dim cn As Integer
cn = 0
For x = -9 To 9 Step 0.01
y = x * x
Cells(1 + cn, 1) = y
cn = cn + 1
Next
については、解説は必要ありませんね。
A1に
という表を作らせただけです。
問題は、この表からどのようにしてグラフを作らせるかです。
まず、コードを
Private Sub CommandButton1_Click()
Dim x As Single, y As Single
Dim cn As Integer
cn = 0
For x = -9 To 9
y = x * x
Cells(1 + cn, 1) = y
cn = cn + 1
Next
End Sub
として、実行して表
を作っておいて下さい。
それで、開発タブを選び、
シートのどこかをクリックします。どこでも結構ですから、
C4辺りでもクリックして下さい。
クリックすると
マクロの記録ができるようになります。
以降、マクロの記録クリック→
OK→A1からA19までドラッグで範囲指定→
挿入→おすすめグラフ
→赤い囲いを選んでからOK
の順に進めます。
さらに、グラフの縦横の長さを調節して、
としてから、
開発→記録終了
の順に進めます。
すると、『記録終了』は『マクロの記録』に戻っています。
この状態でAlt+F11でVBAに戻り、
標準モジュールを選ぶと、Module5等が出ています。
ただし、最初からご自分で作った方はModule1のみとなっているはずです。
添付ファイルの参考ダウンロード添付ファイルから作った方は、
上の図のようになっているでしょう。
添付ファイルが4つのモジュールがすでに出来てしまっている理由は、
講義をするために私が4回試行錯誤をしたためです。
さて、Module1などの該当モジュールをクリックすると、
Sub Macro1()
'
' Macro1 Macro
'
'
Range("A1:A19").Select
ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$A$19")
ActiveSheet.Shapes("グラフ 3").ScaleHeight 1.7777777778, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes("グラフ 3").ScaleHeight 1.333984375, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("グラフ 3").ScaleWidth 0.60625, msoFalse, msoScaleFromTopLeft
End Sub
というコードが出来ているはずです。
もちろん、コードの内容はそれぞれ微妙に変わっているはずです。
先ほどの『マクロの記録』における一連の操作とコードを比較することによって、
Range("A1:A19").Select
は、A1からA19までドラッグで範囲指定
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$A$19")
は、
グラフを作る操作なのだろうと予想でしますし、
その後のコードは縦幅・縦幅の調整をやっているだろうと、推測できます。
そして、一番のメインは
ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select
なのだということを予測することは決して困難ではありません。
そこで、ActiveSheet.Shapes.AddChart2をコピーしてGoogle等の検索サイトで検索します。
すると、
赤い囲いがランキング上位に出てくるはずです。
赤い囲いを選ぶと、
というマイクロソフトのページが出てきます。
このページを読むことによって、
ActiveSheet.Shapes.AddChart2(227, xlLineMarkers, 100, 100, 200, 500).Select
のそれぞれのパラメータ
227, xlLineMarkers, 100, 100, 200, 500, False
は順にグラフのスタイル、グラフの種類、グラフの左端の位置、
グラフの上端の位置、グラフの横幅、グラフの縦幅を意味していたことが、
予想できたわけです。
さらに、
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$A$19")
がグラフを作る際の基データであろう、と考えることは容易といえます。
SetSourceData Source:のスペルが入っているのですから。
以上を学べば、
Sub Macro1()
はもはや不要ですので、全文削除してしまいましょう。
以上の過程を通して
Private Sub CommandButton1_Click()
Dim x As Single, y As Single
Dim cn As Integer
cn = 0
For x = -9 To 9 Step 0.01
y = x * x
Cells(1 + cn, 1) = y
cn = cn + 1
Next
ActiveSheet.Shapes.AddChart2(227, xlLineMarkers, 100, 100, 200, 500).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$A$1800")
End Sub
というコードが完成したのです。
以下いろいろなグラフを作っていきますが、
同様にして、マクロの記録から学んでいけば、
よいわけです。
慣れていけば、マクロの記録など要らなくなるでしょう。
尚、 Step 0.01 を入れた理由はグラフのかくかくをなくすためです。
$A$1800の1800もデータ数が9×2÷0.01=1800からすぐに計算できます。
では、皆さん今回学んだ手法を利用して、サインのグラフを作って下さい。
サインはy = Sin(x) です。
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ
小学生からエンジニアまでのRuby入門へ
本サイトトップへ