プログラミングの勉強は用語を調べて完璧にはじめようとすると、つまらなくて辞めてしまいます。
とりあえずプログラムを動かして、機械がどんな手順で自動で仕事を処理するのか見てみましょう。
今回はデバッグというのを使って、機械の処理を1行ずつ見ていきます。
デバッグは本来、プログラムの間違いを見つけるために行いますが、どの命令文が何をしているのかわかりやすいので勉強に使います。
このページから読み始めるのはオススメしません。
プログラミングのモチベーションを保つために、勉強するとどうなるかは
関連:独学でプログラミングの勉強をして年収が数倍に上がった件
何でエクセルVBAを使うのかは
関連:プログラミングの勉強は何からやればいい?⇒簡単でオススメな方法
勉強のページの最初は
です。
このページがわかりにくかったら、理解していない状態でもいいので、実際のプログラムを動かしてみてください。
わからない所を無視して先に進んで、後で回収する勉強方法をオススメします。
プログラムを途中で止める
今回も単純なプログラムを使います。
前回までのページと同じく、マクロに転記してください。
Dim hensuu As Long
hensuu = 10
Cells(1, 1).Value = hensuu
hensuu = hensuu + 1
Cells(2, 1).Value = hensuu
自分で名前を決められる変数ですが、今回は小文字で
hensuu
としました。
VBAに決められている関数等は頭が大文字なので、わかりやすいよう変数は小文字にしました。
このプログラムを使います。
ブレークポイント(止める場所)を設定する
プログラムをどこで止めるのかを設定します。
やり方は簡単で、
止めたい行の左の方の、赤い丸をクリックすればいいだけです。
一番上のSubの行でも止める事ができます。
ただし、変数の宣言の行だけは止められません。
とりあえす、
hensuu = 10
の行にブレークポイントを設定しました。
設定すると●印がついて、その行が茶色になります。
プログラムを実行してみる
プログラムを実行すると、茶色いブレークポイントに黄色が被さっています。
黄色いのは、機械がプログラムのどの行を読んでいるのかを示す色です。
hensuu = 10
を読んでいるだけで、まだ実行していないのでhensuuに10を入れていません。
黄色いのが次の行に進んだ時に
hensuuに10が入ります。
機械を次の行に進めるのは、キーボードのF8キーです。
F8キーを押すたびに、1行ずつ進みます。
プログラムを1行ずつ読み進む
黄色いのが
Cells(1, 1).Value = hensuu
の行に進みました。
1行前のプログラムが実行されて、hensuuには現在10が入っています。
この画像と同じように、皆さんのディスプレイ(画面)上でもエクセル表とVBAのプログラムを同時に表示できます。
1行ずつ機械が読むと、エクセル表がどう変化するのかわかります。
プログラムを勉強するのに、この形が一番わかりやすいです。
Cells(1, 1).Value = hensuu
に黄色がありますが、機械の目線がこの行にあるだけで、命令は実行されていません。
1行進めて、命令が実行されたらどうなるのか見てみましょう。
エクセル表に結果を表示
黄色いのが1行進み
Cells(1, 1).Value = hensuu
が実行されました。
エクセル表の
Cells(1, 1)にhensuuの中に入っている10が表示されました。
デバッグだからゆっくり見れますが、普通にプログラムを実行すると一瞬で終わるので、どの行が何をしているのかわかりません。
デバッグで止めて、F8キーで1行ずつ進める事で一つ一つの
行=命令文
の役割がわかります。
hensuu + 1の意味
プログラムを進めていきます。
hensuu = hensuu + 1
が実行されて、次の行に黄色が移動しました。
hensuu = hensuu + 1 は、前回までの勉強で出た
『=』
の使い方をおさらいすると、『=』 の右側の足し算の結果が、左側のhensuuに入ります。
hensuuには元々10が入っていて、ここに+1された結果が新たにhensuuに入ります。
右側と左側で同じ hensuu が使われているので複雑に感じるかもしれないので、後述します。
再びエクセル表に結果を表示
今度はhensuuの中に入っている11を
Cells(2, 1) に表示しました。
これで、プログラムで計算をして結果を表示するという一連の動作は終わりです。
黄色は
End Sub
に進み、機械はここでプログラムを読むのを終わりにします。
このデバッグの方法を使って、今回のプログラムを1行ずつ改造して、動作を学んでみてください。
プログラムは動かして覚える
プログラムの細かいルールなんて飛ばして、
『プログラムというのは不器用な人に指示を出すこと』
という感覚を覚えてください。
今回、小文字にした変数ですが、グローバル変数は頭を大文字にした方がいいとか細かい慣習があったりします。
ですがそういうのから勉強をはじめると、日本の英語の授業と同じくプログラムが使えずに終わってしまいます。
まずはプログラムを体感して、細かい事はその後で拾っていく事をオススメします。
変数の中の値を見る簡単な方法
計算の途中で、変数にどの値が入っているのかを見る事ができます。
マウスのカーソルを変数の上に置くと、変数の中身が下に表示されます
この画像で四角に囲まれて
hensuu = 0
となっているのが、変数の中の値です。
変数に何も値を入れていない、最初の状態の時は0です。
カーソルの形はVBAの入力画面上では矢印ではなく『I』に似た形になります。
(キャプチャでは撮れないので画像にはナシ)
黄色は
hensuu = 10
の行にありますが、まだ実行されていないので、初期値の0が入っています。
1行進めると
hensuuに10が入りました。
こんな風にカーソルを乗せるだけで変数の中が見られるので、計算式の間違いがすぐにわかります。
イコールの左右に同じ変数がある場合
前回までのプログラムの勉強で、イコールの使い方はわかりますね?
hensuu = hensuu + 1
のどちらの変数にカーソルを置いても、同じ値が表示されます。
黄色いのが来た時点では、hensuuに10が入っていて、まだ+1されていません。
右側のhensuuを数字に直すと
▼
hensuu = 10 +1
となります。
数学っぽく見えますが、ただの足し算なので気持ち悪くならないでください。
これが実行されると、左側のhensuuが上書きされて、11が入ります。
カーソルを
hensuu = hensuu + 1
のどちらかのhensuuの上に置いてみてください。
hensuuには11が入っている事がわかります。
ここで説明を読むより、実際にプログラムを動かす方がはるかにわかりやすいです。
このページで理解しようとしないで、体感してみてください。
昇給や安定した転職のキッカケとして、プログラミングは大いに役に立ってくれました。
デバッグは独習の肝
どの命令文が何を処理しているのか、デバッグによって明らかになります。
中でもエクセルのシート(アウトプット画面)を見ながら、プログラムも同時に見られるVBAは最も勉強に適しています。
最近だとAIの機械学習がどんなものか、エクセルVBAのデバッグで1行ずつプログラムを追ってみました。
ただプログラムをデバッグで停止させないで動かしたら、CPUがフル稼働して電気代が怖くなったので、わたしがAIを使う事はないでしょう。
システム設計(難しくないです)についても書きました!