和風スパゲティのレシピ

日本語でコーディングするExcelVBA

今年の恵方を調べる関数

ある年の恵方がどの方角かを調べる関数を紹介します。

ソースコード

Function Get恵方(As Long) As String

    Select Case Right(, 1)
        
    Case 0, 5
        Get恵方 = "西南西"
        
    Case 1, 3, 6, 8
        Get恵方 = "南南東"
        
    Case 2, 7
        Get恵方 = "北北西"
        
    Case 4, 9
        Get恵方 = "東北東"
        
    End Select

End Function

実行例

Debug.Print Get恵方(2026) ' ← 南南東が表示されます

解説

恵方は実は4種類しかなく、しかも周期が10になっているため、
西暦年の下1桁「Right(年,1)」を判定するだけで求めることが出来ます。

24年周期だったり、その他条件があったりした方が面白かったのですが、
10進数のためMod演算子の紹介すらできない関数になってしまいました。


一応、Select Case のお手本としてはいいコードになっており、
ElseIf で作るよりはるかに綺麗なコードで書くことが出来ています。

分岐構文に If~Else~End If ステートメントしか使ったことがなかった方は、
この機会にSelect Caseステートメントを試してみてください。


また、Select Caseステートメントを使う際のポイントとして、
1行に複数のコードを書く「: (マルチステートメント)」と相性が良いです。

例えば今回のコードをこのように書くこともできます。

Function Get恵方(As Long) As String

    Select Case Right(, 1)
        Case 0, 5:         Get恵方 = "西南西"
        Case 1, 3, 6, 8: Get恵方 = "南南東"
        Case 2, 7:         Get恵方 = "北北西"
        Case 4, 9:         Get恵方 = "東北東"
    End Select

End Function

 
コードによってはかなり読みやすくなることも多いので、
この書き方もぜひ覚えておきましょう。