今回は、飲み会で便利な「割り勘アプリ」を作ることにします。
実用的といっても、飲み会にパソコンを持っていく人はいないでしょうが(笑)、
プログラミングの学習としては、適している課題だと思いますので。
実はとても簡単に作れます。
これまでに学んだプログラミング技術だけで、作ることができます。
飲み会の最後で面倒なのが、割り勘ですよね。
「どこまで細かく割り勘するか?」という問題があります。
そこで、1円単位、10円単位、100円単位の全てに対応できるアプリを作りましょう。
1000円単位は、暗算で簡単に計算できるので、除きます。
【1】以下のようにプログラミングします。
ファイル名 sample022.vbs
Option Explicit
Dim ans, m, p
Dim y1, y10, y100
m = InputBox("金額を入力してください。", "入力")
p = InputBox("人数を入力してください。", "入力")
y1 = Round(m / p)
y10 = Round(m / p / 10) * 10
y100 = Round(m / p / 100) * 100
ans = "1円単位:" & y1 & "円" & vbCr _
& "10円単位:" & y10 & "円" & vbCr _
& "100円単位:" & y100 & "円"
MsgBox ans, , "答え"
【2】vbsファイルをダブルクリックして実行します。
図のように金額は10000、

人数は6を入力します。

*数字は、全て半角で入力します。
【3】すると、以下のような計算結果になるはずです。

ちゃんと1円単位、10円単位、100円単位の全てで、計算されています。
ただし、プログラムにエラー処理を書いていないので、
・数字以外の文字や記号
・全角の数字
・「キャンセル」ボタンを押す
などをすると、エラーメッセージが出るので、注意してください。
【プログラムの解説】
変数を宣言している部分です。
Dim ans, m, p
Dim y1, y10, y100
ansは答え、mは金額、pは人数、
y1は1円単位、y10は10円単位、y100は100円単位を表します。
1y、10y、100yのほうが分かりやすい気がしますが、
変数名の最初の文字には、数字が使えないためです。
InputBoxを表示し、ユーザーに入力してもらい、変数に代入している部分です。
m = InputBox("金額を入力してください。", "入力")
p = InputBox("人数を入力してください。", "入力")
Round関数を使い、四捨五入してから、変数に代入している部分です。
y1 = Round(m / p)
y10 = Round(m / p / 10) * 10
y100 = Round(m / p / 100) * 100
ここで重要なポイントですが、
Round関数は、小数点以下しか四捨五入ができません。
そこで、ちょっと工夫が必要になるわけです。
1円単位の場合は、小数点以下を四捨五入すればよいので、そのまま使えます。
y1 = Round(m / p)
10円単位の場合は、あえて10で割ることで、
1円の単位を小数点にしてから、四捨五入し、10を掛けて、元の桁に戻しています。
y10 = Round(m / p / 10) * 10
100円単位の場合も、同じような考え方です。割る桁が違うだけです。
y100 = Round(m / p / 100) * 100
このような方法は、プログラミングでは、よく使われています。
覚えておくと便利です。
変数ansに、あらかじめメッセージボックスに表示する文字列を、代入している部分です。
ans = "1円単位:" & y1 & "円" & vbCr _
& "10円単位:" & y10 & "円" & vbCr _
& "100円単位:" & y100 & "円"
これは復習になりますが、
「vbCr」は、MsgBox内での改行です。
「 _」(半角スペースとアンダーバー)は、プログラム内での改行です。
あとは答えを表示しているだけです。
MsgBox ans, , "答え"
どうでしたか?
技術的には、これまでのプログラミングで学んだことだけで、実用的なアプリが作れましたね。
少しだけ、計算に工夫が必要でしたが。