[VBA解説]プログラムに計算させよう![#2]

記事
IT・テクノロジー
前回の記事はこちら

ボタンからマクロを呼び出そう!

さて、前回の記事では初めてのマクロを作成してみました。
指定したセルに値を代入するマクロでしたね。
セルの指定の仕方は思い出せますか?
「=」は「右のものを左に代入する」という意味でしたよね?
数字を使う場合と文字を使う場合で、ちょっと気を付けることもありましたよね?

うろ覚えな方はぜひもう一度前回の内容もおさらいしつつ進めましょう!

まず、前回作成したマクロは、VBE上からF5キーで実行していましたよね。
ただ、実際に使うマクロは、Excelシート上からボタンを押して実行するイメージな方が多いのではないでしょうか。

というわけで、まずはボタンを設置して、そのボタンからマクロを実行してみましょう!

前回保存した、マクロ有効ブックを開き、リボンの「開発」をクリックして下さい。
ボタン.png
「開発」の中に、「挿入」という項目があり、それをクリックすると「フォームコントロール」というものが出てきます。
その一番左上に四角のアイコンがあると思うので、それをクリックして下さい。

それだけでは何も起こりませんが、その状態でExcelシートのセルを、どこでも良いのでクリックしてください。
ボタンにマクロを登録.png

すると、こんな画面が出てきますね。
ここで、作成した「セルに値を代入」を選択し、OKをクリックしてください。こうすることで、ボタンにマクロを登録できます。

ボタン設置済.png
すると、クリックしたあたりにボタンが配置されます。
このボタンを押すと、登録した「セルに値を代入」マクロが実行される、というわけです。

ちなみにボタンにマクロを登録し、その後マクロの処理を書き換えてからボタンを押すと、「書き換えたあとの処理」が実行されることになります。

A1セルに1を代入するマクロを、A2セルに10を代入するマクロに書き換えたあとにボタンを押すと、A2セルに10が入る、ということですね。

ボタンに表示される文字は、ボタンを右クリックすることで、「テキストの編集」というメニューが出てくるので、それを使うとボタンの文字を変更することが出来ます。

これで「Excelのシート上からマクロを実行するボタンを設置する」ことが出来るようになりましたね。
次は今回のメインである、「計算の書き方」です。

VBAで加減乗除

さて、メインと言いつつ、至って簡単です。
次のコード(プログラムの文)を見て下さい。
Range("A1").Value = 1 + 3
Range("A2").Value = 10 - 2
Range("A3").Value = 10 * 5
Range("A4").Value = 100 / 2

何をしているか、大体想像付きますよね。
上から順番に、足し算、引き算、掛け算、割り算です。
掛け算は「*」を使うので、少し違和感があるかもしれませんが、Excelで計算する際も同じように「*」を使うので、普段からExcelを使っていれば普通ですね。
割り算を「/」で表すのも分数のイメージが分かれば問題ありませんね。

おそらく大半の方がイメージする通りの結果になりますが、ぜひご自分で実際にコードを書いてみて、シートに設置したボタンから実行してみてください。
計算マクロ.png
実際に書くとこんな感じになりますね。


ちなみに、これらの計算に用いる記号のことを「演算子」と言います。他にも演算子はありますので、興味のある方はぜひ自分で調べてみて下さい。
興味があることを自分で調べつつ、わかりやすい解説サイトを見つけるのも大事なことです。(決して手抜きではありません)

というわけで、今回やりたかったことの半分は終わりました。半分です。

セルの値を計算に利用する

次に、以下のコードを見てみて下さい。
Range("A1").Value = Range("A1").Value + 5
Range("A2").Value = Range("A1").Value - 10
Range("A3").Value = Range("A1").Value * Range("A2").Value

それぞれ、イメージ湧きますか?
まず1つ目、A1セルの値に5を足し、それをA1セルに代入する、という処理です。
2つ目が、A1セルの値から10引いた数字をA2セルに代入する、という処理です。
3つ目が、A1セルの値とA2セルの値を掛け算し、その結果をA3セルに代入する、という処理です。

このように、Range("").Valueは、「値の代入先」としても使えますし、「既に入力されている値を計算に使用する」ことも出来ます。

実際の業務等を考えていただくと分かるかと思いますが、仮に
「指定したセルに決まった数字を使った計算結果を自動入力するマクロ」
があったとしても、あんまり…というか、全然役に立たないですよね。

そうではなく、Excelシートに入力されている数字を元に計算し、その計算結果を指定のセルに表示するような処理が必要になります。

そのような場合に、「セルに入力されている値を使う」必要が出てくるので、
Range("").Valueで指定して、計算式に組み込むわけですね。

試しにExcelシート上に値を入力し、それらを計算するようなマクロを作って、実行してみてください。
これだけでも、実務で利用出来たりしますよ。


次回予告

さて、今回は演算子と、セルの値を計算に利用する方法を主に紹介しました。
ただ、こう思った方もいるでしょう。

「計算式に毎回Range("").Valueって書くのめんどくさくない?」

はい、めちゃくちゃめんどくさいです。
というわけで次回は、「変数」というものを使って、コードを書きやすく、読みやすい形にしていきます。

出来るだけ早く次も投稿しますが、「変数ってなんだろう?」と気になる方は、ぜひご自分で調べて予習してみてください。

今回の内容で分からない部分があった方は、以下のリンクから有料サポートも受けられますのでご利用下さい。出来るだけ迅速に、丁寧に対応致します。

それでは、今回もお疲れさまでした!

次の記事はこちら。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す