前回はプログラムを打ち込んで実行してみるまででした。
その続きです。
検索でこのページから読み始めた方は、モチベーションを保つために
を先に読む事をオススメします。
勉強は明確なメリットがないと続かないですよね。
それで、今回はIf文というのを使ってみます。
エクセル表の関数にもあるif文ですが、エクセル表で使われていると、ゴチャゴチャしてわかりにくいアレです。
しかしVBAの方が見やすくて、簡単です。
プログラミングが、そんなに難しいものではないと知ってもらえると幸いです。
前回作ったエクセルを使う場合
前回、勉強用に作ったエクセル表を使おうとすると、セキュリティの警告というのが出てくるかも知れません。
その場合は、
『コンテンツの有効化』をクリックすれば使えるようになります。
この辺り、バージョンだとか皆さんの環境のセキュリティレベルによって違うので、
『マクロ セキュリティ』とかでググッて(グーグル検索)使えるようにしてください。
作成したものを社内に配布する時に、各社員のパソコンの設定によって起こる事なので、調べてみてください。
If文を使ってみる
まずエクセル表の、セル1行目のA列に
りんご
と打ち込んでください。
セル1行目のA列は、前回の勉強でやった通り
cells(1,1).value
ですね。
おさらいすると、
cells(行,列)
です。
If文を入力してみる
If Cells(1, 1).Value = “りんご” Then
Cells(1, 2).Value = “冷蔵庫に入れて下さい”
End If
手入力する場合、小文字で打ち込んでも自動的に頭1文字を大文字に変えてくれます。
= の前後の空白も勝手に入ります。
赤丸のスペースですが、別にあけなくてもプログラムは動きます。ただ見やすさの為にあけているだけです。
このあたり、割と適当にやっても大丈夫なのでVBAは勉強しやすいです。
プログラムを1行ずつ読んでみましょう
機械はプログラムを上から1行ずつ読んでいくので、機械になったつもりで1行ずつ読んでいきましょう。
If 条件 Then となっていて、If(もし)とThen(なら) は定型文で、日本語にすると、
もし条件を満たすならという意味です。
条件の部分は、
Cells(1, 1).Value = “りんご”
で
Cells(1, 1)のに入力されている値(文字)と『りんご』を比較して、同じかどうか聞いています。
同じだったら、機械はすぐ下の
命令文を実行します。
そうでなかったら、機械はすぐ下の命令文を飛ばして、End Ifを読みます。
エクセル表に文字を入れる命令文
この命令文で、
Cells(1, 2)つまりセル1行目B列に
冷蔵庫に入れて下さい
という値(文字)が入れられて、エクセル表に表示されます。
『”』は表示されません。この『”』は後述します。
ここで一つ、疑問に思うのがイコール(=)の使い方です。
If Cells(1, 1).Value = “りんご” Then
と
Cells(1, 2).Value = “冷蔵庫に入れて下さい”
で、イコール(=)の使い方が異なっています。
Ifで使う時には、『同じ(か?)』という比較の使い方をしていて
では、Cells(1, 2)に値(文字)を入れるためにイコール(=)を使っています。
If文で混乱するのはこの辺りだけで、後は簡単です。
End Ifはそのままの意味
これは単にIf文の終わりをあらわすもので、かっこ閉じるみたいなものです。
特に何かを実行するわけではないですが、これがないと機械がIf文の終わりがわからなくて迷います。
機械というのは人間に命令するのと違って、プログラムで明確に指示を出さないといけません。
『あれやっといて』
で通じないので、おじさんとかが拒否感を示します。
プログラムは、『ちょっと融通がきかないけど、仕事はキッチリとやってくれる人』だと思ってください。
プログラムを試してみる
エクセル表のCells(1, 1)に、りんご
と入力したら、プログラムを実行してみてください。
Cells(1, 2)に、「冷蔵庫に入れて下さい」が表示されました。
りんごだったら「冷蔵庫に入れて下さい」って出るのって、何かAIっぽくないですか?
もし出ないという人は、カタカナのリンゴになっていないかや、余計な空白が入っていないか確認してください。
エクセル表のCells(1, 2)に
冷蔵庫に入れて下さい
と正しく結果が表示されたら、一旦エクセル表のCells(1, 2)の『冷蔵庫に入れて下さい』を削除してください。
そしてエクセル表のCells(1, 1)に、りんごではなくバナナと入力してプログラムを実行してください。
Cells(1, 2)が空白のままだったら、結果は正しいです。
Cells(1, 2)を削除しないままだと、バナナと入力して実行した時にも冷蔵庫に入れて下さいという文字が残って表示されてしまいます。
面倒な事は命令文を追加して機械にやってもらう
プログラムを試す度に
エクセル表のCells(1, 2)の冷蔵庫に入れて下さい
を削除するのが面倒なので、プログラムに1文追加して、機械がIf文を実行する前に削除してくれるようにします。
です。
これは、Cells(1, 2)に空白を入れるという命令文です。
空白は ”” で表されます。
『”』は、キーボードの2のキーの上に書いてある文字で、シフトを押しながら2を押すと入力できます。
プログラムに使うのは、自分で決められるもの(変数名等)以外は半角です。
キーボードの全角⇔半角のキーの使い方を覚えて下さい。
キーボードに使い道がよくわからないキーがあると思いますが、プログラミングで使ったりします。
これで長年の謎が少し解けましたね。
追加したらプログラムを試してみる
エクセル表のCells(1, 2)に、『冷蔵庫に入れて下さい』と入った状態で、Cells(1, 1)にバナナと入力してプログラムを実行してください。
実行して冷蔵庫に入れて下さいの文字が消えたらプログラムは成功です。
再びCells(1, 1)にりんごと入力して、プログラムを実行して『冷蔵庫に入れて下さい』が表示されるか試してください。
If文をもっと便利に使う
ここまでで試したIf文は、りんごだったら実行するプログラムでした。
りんごでなかった場合に実行する命令文を追加してみます。
赤枠で囲んだ2行です。
Else
Cells(1, 2).Value = “常温でいいです”
Else というのは、『それ以外』という意味です。
Cells(1, 1)がりんごでなかったら、機械は
を実行します。
どちらかを実行します
If文にElseを付け足した意味は、このようになります。
Cells(1, 1)に入っている値(文字)によって、赤枠のどちらかが実行されます。
Elseを入れる事によって、プログラムの活用の幅が広がりませんか?
Else文を追加したプログラムを試してみる
Cells(1, 1)にりんごと入力したり、バナナと入力したりして、実行結果を試してみてください。
バナナと入力した場合、プログラムを実行すると『常温でいいです』と表示されます。
プログラムを試している内に、何となく機械の空気感を感じられないですか?
りんごと正確に入力しないと冷蔵庫に入れて下さいとは出てきません。
正確な入力が必要ですが、命令すると実直に仕事をこなそうとします。
人間に
「りんごだったら冷蔵庫に入れて下さいって入力して」
というのを100回やるよう命令したら、すぐに労基に駆け込まれてブラック上司にされてしまいます。
しかしプログラムなら、どんなにつまらない命令でも毎日着実にやってくれます。
今回は単純なプログラムですが、ここに自分がやらせたい事を追加していけば、自分の仕事をどんどん振っていく事ができます。
システム設計(難しくないです)についても書きました!