パーツ化とは
ExcelVBAマクロ初級者からの脱却が、処理のパーツ化(プロシージャの分割)と考えています。
マクロを作る上で基本機能をパーツ化する事で、開発時間の削減に繋がります。
処理はパーツ単位で分ける事を心掛けましょう。
分かりやすく説明すると、エクセルの「関数」と同様です。
SUM関数であれば セル内に「=SUM(1+2+3)」と記載すれば、セルには「6」と表示されますよね。
値を渡せば正しい値で返ってくる動きです。
このコードをコピペでOK
今回はパーツ化ではあるのですが、どちらかというとワンランク上のコードの組み方の参考例です。
CSVやテキストデータを取込や出力する際、ヘッダー行が固定ではなく可変の場合があります。
ヘッダー行を可変に対応したプログラムの作成者はユーザーの事を考えているなと思います。
Public COL_JAN_CODE As Variant
Public COL_GOODS_NAME As Variant
Public Const ROW_HEADER As Long = 1
Public Const COL_START As Long = 1
'■ヘッダー行が可変の場合に、列名を取得する。
Public Function call_COL_Exec()
Dim tCol As Long
Dim lastCol As Long
Dim ws As Worksheet
'■検索対象シートを代入
Set ws = ThisWorkbook.Worksheets(1)
'■JANコードの列取得 tColなら数字、COL_JAN_CODEなら列名
lastCol = Call_LastColWs(ROW_HEADER, ws)
tCol = Call_SearchResultCol(ws, "JAN", ROW_HEADER, COL_START , ROW_HEADER, lastCol)
COL_JAN_CODE = Call_ColConv(tCol)
'■商品名の列取得 tColなら数字、COL_GOODS_NAMEなら列名
lastCol = Call_LastColWs(ROW_HEADER, ws)
tCol = Call_SearchResultCol(ws, "商品名", ROW_HEADER, COL_START , ROW_HEADER, lastCol)
COL_GOODS_NAME = Call_ColConv(tCol)
End Function
結果イメージ
JANコードがA列、商品名がB列の場合、以下のような結果が得られます。
| tCol | COL_JAN_CODE COL_GOODS_NAME | |
| JAN | 1 | A |
| 商品名 | 2 | B |
その他
今回は、色々なパーツを組み合わせての処理です。こちらの記事のコードの単独では動きません。
下記の関数を追加しておく必要があります。
エラー回避処理は入れていませんので、指定したヘッダー行は存在している前提です。



コメント