こんにちは!かいけつマクロです。
前回は、皆さん自身でExcelマクロを作成し、ちゃんと動くことまで確認していきました。感動のあまり涙がちょちょ切れた方もいらっしゃるかもしれません。ええ、いないと思います。(第2講に続き2回目)
今回からは、Excelマクロを利用して、電卓を作っていきたいと思います。

え?急に?
こちらの電卓、実は、Excelマクロを学ぶにあたって、非常に大切なことが詰まってるんです!
なので、

俺はスマホの電卓あるからいいや
とか言わずに、本日もぜひ最後まで見ていってください。それでは、張り切ってまいりましょう!
電卓を自作するまでの流れ
電卓は、第4講~第8講の5回に渡って作成していく予定です。大まかな流れはこちら。
<第4講>
・電卓のレイアウトを作成する
・セルの内容を、変数に代入する
<第5講>
・四則演算の分岐処理を実装する
・四則演算を行い、結果をセルに反映する
<第6講>
・インプットボックスから、数字や四則演算を入力できるようにする
<第7講>
・数字や四則演算以外が入力された場合の処理を実装する①
<第8講>
・数字や四則演算以外が入力された場合の処理を実装する②

イヤー、めっちゃ多いし、知らない言葉も出てきて難しそうじゃん!
もう無理、寝る!
という方、安心してください。今回も、丁寧に解説していくので、きっと皆さん理解できるはず!一緒に頑張っていきましょう!
電卓のレイアウトを作成する
それでは早速こちら、「電卓のレイアウトを作成する」からやっていきましょう。

うん?それって、Excelでお絵描きするってこと??
と思われた方、ご名答!今回は、Excelのセルに、値と四則演算を入力して、その結果が別のセルに反映される、という電卓を作るので、まずはそのレイアウトから作っていきます。

レイアウトなんて後でいいじゃん!
早くExcelマクロで実装しようよ!!
と言われるかもしれないですが、実は、このレイアウトを考える作業、最初にやることが、メチャメチャ重要なんです!
なんでそんなに重要なのかというと、Excelマクロの中で、「〇〇のセルを■■しなさい」という処理を書くことが、非常ーーーーに多いのですが、この「〇〇のセル」というのが「どこのセル?」という状態だと、プログラミングをしたくてもできませんよね?
なので、Excelマクロを作成する時は、まず、作りたいもののレイアウトを決めることが大切になってくるわけです。
ということで、とりあえず、こんなレイアウトを作りましょう。(B4~D4は入力エリア、F4は計算結果の出力エリアです。)


超シンプルー
ここで、1点注意があります。上のファイル名を見てもらうとわかるのですが、「calculatorsample.xlsm」となっていて、「.xlsx」ではないです。

そんな細かいことどうでもいいじゃん!
と言われそうですが、Excelマクロを動かす場合、拡張子は必ず、「.xlsm」でないとダメ、というルールがあるので、こちらはしっかり覚えておきましょう!
さて、次は、いよいよExcelマクロの作成に取り掛かっていきます。
セルの内容を、変数に代入する
ということで、まずはいつも通り、Excelを開いて、「Alt+F11」からVBEを開いてください。それができたら、「挿入」→「標準モジュール」から、「Module1」を用意しましょう。

ここら辺の操作が不安だな
という方がもしいらっしゃれば、第3講の「プロシージャを定義する」で解説しているので、こちらを参考にしてみてください。
ここに、プロシージャを定義しましょう。プロシージャ名は、その名の通り「計算機」で行きます。

そうしたら、ここに変数を定義していきます。「Tab」で1回インデントをした上で、このように入力してください。
Dim a As Long
a = Cells(4,2).Value
こんな感じになりましたかね?
(VBEのおかげで、自動的に大文字にしたり、スペースを入れたりしてくれます。さすがです!)

さて、今記述した2行について見ていきましょう。
まずは、2行目ですが、こちらはひょっとしたら、見覚えある方もいらっしゃるかもしれません。
そうです!「マクロの世界の「=」は「代入」を意味する」んでした。
何の話だっけ?という方は、こちらをご覧ください。
つまり、「Cells(4,2).Value」を「a」に「代入」している、ということです。
・・・これだけじゃ、全く意味不明ですね。もう少し、よく見ていきましょう。
セルの値を取得する
まずは、「Cells(4,2).Value」の部分です。「.(ドット)」は、日本語の「の」や「を」を同じ意味なので、直訳すると、「Cells(4,2)のValue」=「セル(4,2)の値」となります。
では、「セル(4,2)」とは、どこでしょうか。こちらの図を見てください。

Excelマクロの世界では、A1セルをCells(1,1)として、
- 下方向に進むと、Cells(〇,×)の、〇の部分が1つずつ増える
- 右方向に進むと、Cells(〇,×)の、×の部分が1つずつ増える
というルールがあります。そのため、「Cells(4,2)」というのは、A1セルから、
- 下方向に、3つ
- 右方向に、1つ
移動したセルということで、B4セルになります。(薄い黄色のセルですね。)

・・・ということで、「a = Cells(4,2).Value」では、「B4セルの値を取得し、それを「a」に代入している」ということがわかりました!
それでは、この「a」とは何でしょうか?実は、それが、もう一つの行になります。
変数を定義する
Excelマクロの世界では、「変数」というものがあります。こちらをご覧ください。


なんかこの絵見たことあるなー
という方はさすがです!よく勉強されてますね!この絵は、第2講で出てきた、代入のイメージです。
第2講では、詳しく触れなかったのですが、「ダンボール箱」の役割をするのが、「変数」となります。つまり、何が入ってくるかはよくわからないけど、それを入れる入れ物、ということですね。
そして、「変数」は、以下のように定義します。
Dim 変数名 as 型
今回の場合は、「Dim a As Long」だったので、
- 変数名:a
- 型:Long
となります。(上のダンボールの例だと、変数名:ダンボール箱、型:果物 ですかね。)
なお、今回は長くなるので、「型」の説明は、省略しようと思います。後ほどのブログで、別途解説を上げる予定です。
さて、これで、変数「a」を定義し、変数「a」に値を代入できるようになりました!
電卓を作成するには、この他にもいくつか「変数」を定義し、代入処理を用意してあげる必要があります。今回ちょっと長くなってきましたが、もう少しなので、そこまでやってしまいましょう!
こちらを入力してください。
Dim a As Long
Dim b As Long
Dim operator As String
a = Cells(4, 2).Value
b = Cells(4, 4).Value
operator = Cells(4, 3).Value
こんな感じです。

Cells(4,4)、Cells(4,3)は、各々、D4、C4セルですね。

お疲れ様です!これで、今回予定していた、
- 電卓のレイアウトを作成する
- セルの内容を、変数に代入する
の部分の作成が完了しました!
本日のまとめ
電卓を作成するため、以下をやってきました。
- 電卓のレイアウトを作成する
- セルの内容を、変数に代入する
今回は、少々地味な内容だったので、

なんか消化不良だなー
と思われたかもしれませんが、実は、次回、電卓Ver1が完成します!
デデーン。
ぜひ、次回をお楽しみに!それでは!
- Excelマクロを作成する時は、まずレイアウトを決める
- 「変数」とは、何が入ってくるかはよくわからないけど、それを入れるための入れ物
コメント