ExcelマクロでSelect~Case構文を使って経理処理

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

私は、Excelマクロで条件により処理を変える記述には、IF~Then構文を使用することが多いですが、ほかにもSelect~Case構文というものがあります。

Selectcase_test_14

今日はSelect~Case構文について簡単に記載します。


Select~Case構文の基本

Select~Case構文は次のように記述します。

3つ(条件1、条件2、その他)の処理に分ける場合

[aside type=”boader”]Select Case 変数(条件の対象)

Case 条件1

(条件1を満たした場合の処理)

Case 条件2

(条件2を満たした場合の処理)

Case Else

(上記の条件を満たさなかった場合の処理)

End Select[/aside]

Caceの後の条件の記述方法

Caseの後の条件は次のように記述します。

① 文字列を指定する場合

Case “こんにちは”」(「こんにちは」と一致した場合)

② 数値の多寡を指定する場合

Case Is > 1」(1より大きい数値の場合)

③ 数値で範囲を指定する場合

Case 10 To 30」(10から30の数値の場合)

 

Select~Case構文の使用例

Select~Case構文を使って、次のような固定資産の判定処理を作成してみました。

Selectcase_test_11

上のような表を用意し、金額の多寡によりC列に税務上の処理方法を表示するようなします。

(処理方法は「金額」を基準により判定しているため、実際にどの方法を適用するかは、その他の条件を検討する必要があります。)

Select~Case構文の記述

VBAでは次のような記述をしました。

Selectcase_test_12

 

① 変数の宣言

ワークシートとLong型の変数を2つ用意し変数lonYaは行数の管理に使用するため、最初の行数である「2」を代入しました。

上の画像の緑色の枠囲み。

 

② DO~Loop

2行目から6行目までを繰り返す処理を記述するため、「Do Until lonYa=7」と記述しました。

また、もう1つの変数lonAaには、Do~Loopの繰り返し処理のなかで、B列の数値を代入します。その後のSelect~Caseの記述でlonAaに代入された数値の多寡により異なる処理を実行するように記述します。

 

③ Select~Case

lonAaに代入された数値の多寡を判断し異なる処理を実行します。記述したCaseは次の3つ(1~3)です。最後のCase Else(どれにも当てはまらない場合)も含めると4つの異なる処理を実行するようになります。
(上の画像の赤色の枠囲み)

[aside type=”boader”]◆(1) 10万円未満の場合は、「消耗品費等」

◆(2) 10万円超20万円未満の場合は、「一括or少額(中小

特例)」

◆(3) 20万円超30万円未満の場合は、「少額(中小特例)」

◆いずれのCaseにも該当しない場合は、「固定資産」[/aside]

実行すると次のとおりです。

Selectcase_test_13

 

まとめ

私はIF~Thenを多用するため、Select~Caseはあまり使いませんが、長い記述になるような場合は、複数のIF~Thenと区別するためにSelect~Caseで記述することがあります。


■□◆◇ 編集後記 ◇◆□■

しょうが湯、くず湯が恋しい季節です。気休めかもしれませんが、風邪気味の時などよく飲みます。