Functionお決まりの書き方

中級VBA

Functionプロシージャの書き方

 長年プログラムを書いていますと、ある定まった形にしておいた方が見た目もスッキリしてミスが少なくなる場合があります。
 今回はBoolean型を返すFunctionの定型を紹介します。
 慣れれば他の型にも転用できますので、是非マスターしてください。

冒頭に返すべき型の変数を定義しておく

 以前書いたプログラムを例に挙げます。

Function IsExistsSheet(sheetName) As Boolean
    Dim b As Boolean   '①
    b = False    '②
    
    Dim sh
    For Each sh In Worksheets     
        If sh.Name = sheetName Then   
            b = True   '④
            Exit For      
        End If
    Next sh
    
    IsExistsSheet = b   '③
End Function

 ①まずは、Functionで返すべき型の変数を用意しておきます。
 ②次に何も起こらなかった場合(デフォルトの状態)を示すFalseを変数にセットします。
 ③そして最後に、Functionプロシージャ名 = b として結果を出力させます。
 ④途中でTrueとなるケースを書く事になると思いますが、この時点では変数 b に値をセットさせるだけで、最後の③までFunctionの出力を行わないのがコツです。
 こうする事で、後で条件を変更したいなど改造する時に一貫性が保たれるため保守しやすくなります。

最後に結果を出力させるのがコツ

 Boolean型ではなく、文字列などを出力する場合でも、この方法が役に立ちます。
 最初に良くない例を示します。

'良くない例
Function getSN(name As String) As stirng
    Select Case name
        Case "リンゴ"
            getSN = "F-001"
        Case "いちご"
            getSN = "F-002"
        Case "オレンジ"
            getSN = "F-003"
        Case "パイン"
            getSN = "F-004"
        Case "スイカ"
            getSN = "F-005"
        Case Else
            getSN = ""
    End Select
End Function

 この場合、プロシージャ名を変更して別の同じようなプロシージャを作る時、変更する箇所が増えて扱いずらくなります。
 以下が最後に結果を出力させる例です。

'良い例
Function getSN(name As String) As stirng
    Dim result As String
    result = ""
    Select Case name
        Case "リンゴ"
            result = "F-001"
        Case "いちご"
            result = "F-002"
        Case "オレンジ"
            result = "F-003"
        Case "パイン"
            result = "F-004"
        Case "スイカ"
            result = "F-005"
        Case Else
            
    End Select
    
    getSN = result
End Function

 この方法ですとプロシージャ名を変更しても最後の行だけを変更すればOKです。
Case Else は書かなくてもOKです。

まとめ

 プログラムの書き方は色々な流儀があると思います。

 ・For文のカウント変数は i を使う
 ・ワークシートを示す変数は、ws や sh を使う
 ・Boolean型の変数には bFlag などと b で始める
 ・自作のプロシージャ名には myProg などと my を付ける
 ・Rangeは絶対的参照に使い、Cellsは相対的な参照に使う
 
 これらは筆者の自己流の決まり事としています。
 守らないといけないというよりは自発的なルールになります。
 プログラムのコツは「わかりやすい事」「見やすい事」「後から理解しやすい事」だと思います。
 (3つとも同じような内容ですが,,,)
 
 Web上にはさまざまなサンプルコードが出ており、筆者も大いに参考にさせてもらっています。
 中でも「見やすいなぁ」とか「わかりやすいなぁ」と感じるコードに関しては書き方も真似るようにすると良いでしょう。
 
 そういう事を続けていく中で、バグが起こりにくいコードに集約されて行くと思いますので、積極的に取り入れていくようにしましょう。

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