[VBA] ユーザー定義定数を使って消費税を計算します

ユーザー定義定数

 マクロの中で使用される値を リテラル値 とよびます。
 たとえば、次のようなマクロがあったとします。

 '消費税を計算します

 Sub ConsumptionTax()

 Dim mymsg As String
 Dim x As Single
 Dim z As Single

 mymsg = "価格を入力してください"

 x = InputBox(mymsg)

 z = x * 0.08

 MsgBox "消費税は" & z & "円です"

 End Sub

 これはユーザーさんが価格を入力して、その消費税を返すマクロです。消費税にあたる 0.08 という数値がいわゆるリテラル値です。一見して何の問題もなさそうなマクロに見えますけど、消費税というのは時代によって(上がってほしくはないですけど)変動するので、マクロやモジュールの中で 0.08 が何十個も使われていたら大変なことになってしまいます。そこでモジュール全体で共通に使用できる定数(ユーザー定義定数)を用意しておくと、いざというときの修正がとても簡単になります。というわけで宣言セクション(モジュールの一番上)に Const ステートメントを使って

Const mytax As Single = 0.08

と記述しておきましょう。すると mytax はモジュール内で共通に 0.08 という数値だと認識されます。さきほどのマクロの

z = x * 0.08

という箇所を

z=x*mytax

と書き換えて同じ結果が返ることを確かめてくださいな。消費税が 10% に上がったときはユーザー定義定数のほうを

Const mytax As Single = 0.1

と書き換えるだけで済みます。ちなみにユーザー定義定数はマクロの中で宣言すると、そのマクロの中でのみ有効な定数となります。また、他のモジュールでもこの定数を使いたい場合は

Public Const mytax As Single = 0.08

のように記述してくださいな。
 

消費税のあれこれを計算するマクロ

 せっかくなので、消費税 (Consumption Tax) に関するあれこれを計算する便利な関数を作って載せておきますよ~。Function Macro なのでワークシートで簡単に使えますよ~。

 '消費税関数 (C)KOBATO

 Function CTAX(x As Single, Optional s As Integer = 0)

 Select Case s

 '税抜価格から消費税を計算します
 Case 0
 CTAX = x * mytax

 '税込価格から消費税を計算します
 Case 1
 CTAX = x * mytax / (1 + mytax)

 '税抜価格から税込価格を計算します
 Case 2
 CTAX = x + x * mytax

 '税込価格から税抜価格を計算します
 Case
 CTAX = x / (1 + mytax)

 End Select

 End Function

 このマクロをワークシートで使うときは

=CTAX(価格[,計算の種類]

というように入力します。[計算の種類] はオプション引数です。ここには整数を指定してください。引数に対応する計算は次のようになっています。

 0:税抜価格から消費税を計算します
 1:税込価格から消費税を計算します
 2:税抜価格から税込価格を計算します
 それ以外の整数:税込価格から税抜価格を計算します

 0 のときは引数を省略しても同じです。たとえば、

=CTAX(1000)

と入力すると税抜価格 1000 円の消費税 8 % を計算して 80 という値を返します。

=CTAX(2160,1)

と入力すると税込価格 2160 円のうち消費税がいくらなのかを計算して 160 という値を返します。

=CTAX(3000,2)

と入力すると税抜価格 3000 円に消費税を上乗せした値を計算して 3240 という値が戻ります。

=CTAX(3240,3)

と入力すると税込価格 3240 円の品物から消費税を除いた価格を計算して 3000 という数値が戻って来ますよ~。とっても便利ね~。ぜひ使ってみてくださいな~。

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)