パーツ化とは
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 |
その他
今回は、色々なパーツを組み合わせての処理です。こちらの記事のコードの単独では動きません。
下記の関数を追加しておく必要があります。
エラー回避処理は入れていませんので、指定したヘッダー行は存在している前提です。
コメント