【ExcelVBA小ネタ】ヘッダ行をEnum化
Excelの巨大な表を相手にVBAを組む羽目になったときのTipsを紹介します。
Enumを使う
こんな巨大な表があったとします。

ヘッダ部分が日本語です。漢字ひらがな数字英字機種依存文字たくさん混じっています。
この表に対して、罫線を引いたり、集計したり、なんやかんやのVBA操作をしなさいというようなVBAを作れと言われたら、ヘッダ部分は手っ取り早く、Enumにしてしまうとよいです。
どうやってEnumにするかというと、
先頭のヘッダ行の一番左のセルをアクティブ

Ctrl+Shift+→(右矢印)でヘッダ行全選択

Ctrl+Cでコピー→Ctrl+Nで新規ブック生成→セルA1で右クリック→形式を選択して貼り付け→値、行/列の入れ替えにチェック→OK


これをもう一度選択してコピーして、今度はVBEに貼り付けます。

あとは、Enumにしていく作業になります。
Enum化にあたっての注意点
Enumにするにあたって、気を付けることは、
- 先頭文字が数字は不可
- かっこはつかえない
- 重複する文字列は不可
などなど。ほかにもあるかもしれません。
全部知らなくてもいいです。もしだめならだめで、コンパイラがエラーとして教えてくれるので、エラーになったら直していけばいいです。


Enumの最後にはEnd Enumをつけます。

加工が終わるとこんな感じです。

最後にTheEndをつけるとよい
これはTwitterから得た知見なんですが、最後にTheEndをつけ、値は最終項目と同じにするとよいです。

こうすると何がよいかというと、のちに変更が発生したときに、Enumだけ修正すればよく、手続き本体の修正は最小限にとどめられるということです。
私いつもここは「EndCol」とかにしていたんですよ。最後の列番号だから。
でも@excelvba_diaryさんのTheEndとする方がセンスがよいと思いました。
「利用するケースは少ない」と呟かれていますが、場合によってはビシバシ使うと思います。複数のファイルを開いてマージしたり、CSVに吐き出したりとか。私はテスト結果CSVをビジュアルに見やすいExcel表に加工するという工程でよく使いました。
手続き部での使用例

Enum化すると何が便利かというと、列番号を意識せずにコーディングできるという点です。
おまけ:セル結合しているヘッダ行の例



以上、何かのお役に立てば幸いです。
ここまでお読みくださりありがとうございました。
-
前の記事
監督指導による賃金不払残業の是正結果 2022.09.01
-
次の記事
freeeで按分率を適用した車両費を振り替えるには 2022.09.03