_基本

処理はパーツ単位で分ける事を心掛ける【パーツ化】【ExcelVBA】

パーツ化とは

ExcelVBAマクロ初級者からの脱却が、処理のパーツ化(プロシージャの分割)と考えています。
マクロを作る上で基本機能をパーツ化する事で、開発時間の削減に繋がります。

パーツ化のサンプルコード

具体的な方法は以下です。Module1にコピペしてください。

'■税抜き価格から税込価格を計算する
Public Sub sample()

    Dim money As Long: money = 0
    
    '■税込み計算をパーツ化した場合
    money = Call_TAXinclude(100)                '110
    money = money + Call_TAXinclude(300)        '440(110+330)
    
    '■税込み計算をパーツ化しない場合
    money = 100 * 1.1             '110
    money = money + 300 * 1.1     '440(110+330)
    
End Sub
'■実際に計算するプロシージャ(パーツ化されたコード部分)
Public Function call_TaxIncrude(ByVal num As Long)
    call_TaxIncrude = num * 1.1
End Function

注意点(よくある初心者の勘違い)

  • 「Module1」などのモジュールに対して、一つの処理しか書けないんじゃないの?
    一つのモジュールに何個もプロシージャ(Sub ~End Sub)は書けます。
  • コードが別の場所に書いてあるから、よくわからなくなる。(何のために分割するのかわからない)
    →パット見よくわからないかもしれませんが、税率変わったときにすべての*1.1を書き換える?
    それのが面倒。
  • 今回の例(税込価格算出)は理解したが、実際のコードでどこで分割したらいいかわからない。
    まずは同じ処理を一つにまとめてみて、概念を理解したほうがいいと思います。
    特にInternetExplorerSeleniumBasicでの自動操作の場合、
    前任者が、読み込み待ち処理をパーツ化しておらず、
    Webページを読み込む度に5行以上のコードが存在し、
    パーツ化の概念理解している人が100行で書けるコードが、1000行になって見にくい状態でした。
  • 実際には上記コードもいいコードではありません。
    理由は税率なんてそこまで変わるわけではない。定数化しておきましょう。

関連記事

コメント

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