【Excel】【VBA】変数のおきかた

IT

ExcelでのVBAマクロを使えるようになると、人の手要らずでの計算やファイル作成が可能になります。

この記事では、変数をおく際の注意点を紹介します。

意味が分かるような変数をおこう

変数をおくときは、その変数を見たときに、その変数の意味が分かるようなネーミングにしましょう。

例えば、下記のような変数のネーミングの例を見てみましょう。

以下の売上マスタで、店舗ごとの売上金額の合計値を求めたいとします。

以下のプログラムを実行してみます。

Dim i As Long
Dim a As Long
Dim b As Long
Dim c As Long
Dim d As Long
Dim e As Integer

a = 0
b = 0
c = 0
d = 0

For i = 2 To 16
    If Cells(i, 2) = "△△支店" Then
        a = a + Cells(i, 4)
    ElseIf Cells(i, 2) = "××商店" Then
        b = b + Cells(i, 4)
    ElseIf Cells(i, 2) = "〇〇駅前店" Then
        c = c + Cells(i, 4)
    End If
Next i

d = a + b + c
e = d / 15

MsgBox ("△△支店の売上金額は" & a & "円です。" & vbCrLf & _
        "××商店の売上金額は" & b & "円です。" & vbCrLf & _
        "〇〇駅前店の売上金額は" & c & "円です。" & vbCrLf & _
        "全店の売上金額の平均は" & e & "円です。")

実行結果は以下の通りです。

問題なく実行できていますが、プログラム作成から時間が経ち、プログラムを修正しようとしたとします。

ここで問題発生です。

置いた変数の意味が分からないため、可読性がありません。

そのため、イチからプログラムを見直して、何の変数だったかを読み解いていく必要があります。ただ、読み解く人にとって認識齟齬を招く場合があり、そもそもその時間自体が無駄です。

こういったことを防ぐために、あとから見返してもその変数が何を意味しているものか分かるようにしなければいけません。

日本語表記よりも英語表記で変数をおこう

次に変数を日本語をローマ字で置くよりも英語表記で置いた方が良いです。

この理由は、見栄えの問題が大きいので、絶対に英語表記で記載しなければいけないというわけではありません。

しかし、日本語のローマ字だと読みにくいかつ日本人にしか変数の意味が分からないというデメリットがあります。

例えば、下記の変数のネーミングを見てみましょう。

以下の売り上げマスタで、店舗ごとの売上金額の合計値を求めたいとします。

例として以下のようなプログラムを実行してみましょう。

Dim i As Long
Dim uriage_1 As Long
Dim uriage_2 As Long
Dim uriage_3 As Long
Dim goukei As Long
Dim heikin As Integer

uriage_1 = 0
uriage_2 = 0
uriage_3 = 0
goukei = 0

For i = 2 To 16
    If Cells(i, 2) = "△△支店" Then
        uriage_1 = uriage_1 + Cells(i, 4)
    ElseIf Cells(i, 2) = "××商店" Then
        uriage_2 = uriage_2 + Cells(i, 4)
    ElseIf Cells(i, 2) = "〇〇駅前店" Then
        uriage_3 = uriage_3 + Cells(i, 4)
    End If
Next i

goukei = uriage_1 + uriage_2 + uriage_3
heikin = goukei / 15

MsgBox ("△△支店の売上金額は" & uriage_1 & "円です。" & vbCrLf & _
        "××商店の売上金額は" & uriage_2 & "円です。" & vbCrLf & _
        "〇〇駅前店の売上金額は" & uriage_3 & "円です。" & vbCrLf & _
        "全店の売上金額の平均は" & heikin & "円です。")

以下のような結果になりました。

問題なく実行できていますが、これでは日本語での記載なので、日本人しかプログラムを理解することができません。

プログラムは英語で記載することが基本ですので、各変数は英語で表記した方が無難です。

理想的な変数の置き方

前述した例を用いて、理想的な変数の置き方を紹介します。

下の売上マスタで、店舗ごとの売上金額の合計値を求めたいとします。

例として以下のようなプログラムを作成しました。

Dim i As Long
Dim sales_1 As Long
Dim sales_2 As Long
Dim sales_3 As Long
Dim sum_sales As Long
Dim ave_sales As Integer

sales_1 = 0
sales_2 = 0
sales_3 = 0
sum_sales = 0

For i = 2 To 16
    If Cells(i, 2) = "△△支店" Then
        sales_1 = sales_1 + Cells(i, 4)
    ElseIf Cells(i, 2) = "××商店" Then
        sales_2 = sales_2 + Cells(i, 4)
    ElseIf Cells(i, 2) = "〇〇駅前店" Then
        sales_3 = sales_3 + Cells(i, 4)
    End If
Next i

sum_sales = sales_1 + sales_2 + sales_3
ave_sales = sum_sales / 15

MsgBox ("△△支店の売上金額は" & sales_1 & "円です。" & vbCrLf & _
        "××商店の売上金額は" & sales_2 & "円です。" & vbCrLf & _
        "〇〇駅前店の売上金額は" & sales_3 & "円です。" & vbCrLf & _
        "全店の売上金額の平均は" & ave_sales & "円です。")

以下のような結果になりました。

下記のように、変数を置きました。

売上 ⇒ sales

売上合計 ⇒ sum_sales

売上平均 ⇒ ave_sales

こうすることで、変数を見ただけで、何を意味しているのか後から読んだ人でも分かるようになります。

まとめ

プログラム作成時の変数の置きかたの注意点について、紹介しました。

まずは、他の人が見てもその変数の意味が分かるようにしましょう。

日本語表記よりも英語表記で短く表記しましょう。

可読性の高いプログラム作成を目指して頑張りましょう。

コメント

タイトルとURLをコピーしました