プログラムの勉強を英語の勉強に例えます。
『アメリカ人を笑わせる』
という実践的なお題に対して、
「英語のbe動詞の使い方が間違っている」
などにこだわると、以降は延々と英文法の問題になって、いつまでもゴールに辿りつかず勉強が嫌になってしまいます。
ここではプログラムを
『とにかく日常の仕事に使えるもの』
という観点で、枝葉末節(細かい事)を無視して、動かす事を目的にしています。
わたしが実践して収入に変えた経験に基づいた、一番簡単な勉強方法です。
このページから見始めた方へ
このページは、過去の勉強を経てから見た方がわかりやすいです。
システム設計(難しくないです)についても書きました!
Forループの準備
まずはコピペ用です。
Dim imarow As Long ‘今ドコの行
Dim endrow As Long ‘データ最終行
endrow = Cells(Rows.Count, 1).End(xlUp).Row
For imarow = 1 To endrow
If Cells(imarow, 1).Value = “東京都” Then
Cells(imarow, 2).Value = “首都です”
End If
Next imarow
エクセル表には、このように都道府県を入れてください。
これもコピペ用です。
大阪府
東京都
秋田県
兵庫県
愛媛県
東京都
千葉県
最終行を決める
ループ文の終わりを決めます。
endrowは、自分で決められる変数の名前です。
終わり(end)の行(row)という意味で、endrowにしました。
このデータの例では、8行目がデータの入った最後の行です。
今までのように
endrow = 8
というプログラムを書くのが一番簡単ですが、これだとデータを増やした時に対応できなくなります。
データが8行でも、100行でも対応できるようにします。
Cells(Rows.Count, 1).End(xlUp).Row
というのは、数字の1以外はプログラムに決められている定型文です。
毎回ググって(Google検索)してコピペすればいいので、暗記しなくて大丈夫です。
数字の1は、今回のエクセル表では
A列
で、データがどの行まで入っているのか知りたいので、
A列=左から1列目
なので、1を入れています。
B列の最終行を知りたい場合は、ここを2にします。
For 文で1行ずつ都道府県をチェックする
1行ずつ、都道府県の名前をチェックして、
東京都の場合、B列に首都です
と表示するプログラムです。
imarow というのが、『今ドコの行か』の意味です。
1行ずつ、A列のセルをチェックしているので
Cells(imarow, 1).Value
となっています。
For文にIf文を組み合わせる
For文の中にIf文が入っていると、複雑に見えますが、
For は For だけで見て、
If文はIf文だけで見ると、大して複雑でない事がわかります。
For文はただ、繰り返しているだけ
For文はただ、Next までいったら+1をして、頭のForに戻るだけの文です。
前回の学習で学んだ通り、グルグル回るだけのシンプルな機能しかありません。
If文は今まで通り
If文は、
で勉強したものの、行に変数imarowを使っただけです。
もし Cells(imarow, 1)
に東京都が入っていたら、隣のセルに
首都です
と表示します。
プログラミングは勉強すればするほど、単純な事の組み合わせだとわかってきます。
一つ一つ分解すると、すごく簡単な事をしているだけです。
デバッグで見るとわかりやすい
ForとIfの組み合わせは、デバッグで1行ずつ見るとわかりやすいです。
で勉強した通り、黄色いのが機械が読んでいる行です。
imarowの上にカーソルを置くと、エクセル表の何行目をチェックしているのかがわかります。
デバッグで機械と同じ視点を持つ
デバッグの黄色い行は、機械がどこのプログラムを読んでいるのかを示しています。
これを追うことで、機械がどうプログラムを処理しているのかがわかります。
デバッグしているプログラムの脇に、エクセル表も表示させると、よりわかりやすいです。
デバッグ時は、プログラムが最前面にくるように
デバッグ中にエクセル表をクリックしてしまうと、エクセル表が最前面に来てしまいます。
この時にキーボードのF8キーでプログラムを進めようとしても、F8キーはエクセル表に適用されてしまうので、プログラムは進みません。
もう一度、プログラム側をクリックして、最前面にしてください。
システム設計(難しくないです)についても書きました!