名簿作りマクロ(3)
名簿作りマクロの組立
前回
のつづき。
次のような手順で組み立てる。
このような手順で進めていきます。
ユーザ定義型・列挙型の宣言
コードの可読性を上げるために、列挙型を駆使する。
リスト1-1 ユーザ定義型
Public Type Racer rcName As String rcPhonetic As String belongsTo As String graduateTerm As Integer rcGrade As String rcClass As String rcStyle As String isEliminated As Boolean End Type
選手データを格納するための変数の束。
ワークシートとの対応は、
画像の通り。
リスト1-2 列挙型orgCol
Public Enum orgCol rcName = 1 rcPhonetic belongsTo graduateTerm rcGrade rcClass rcStyle isEliminated End Enum
転記元ワークシート各列の名称を定義している。
ワークシートとの対応は、
画像の通り。
リスト1-3 列挙型styleCol
Public Enum styleCol prefNum = 1 styleNum rcPhonetic rcStyle rcName graduateTerm rcGrade rcClass belongsTo End Enum
転記先の「戦法別」ワークシート各列の名称を定義している。
ワークシートとの対応は、
画像の通り。
リスト1-4 列挙型prefCol
Public Enum styleCol prefNum = 1 styleNum rcPhonetic rcStyle rcName graduateTerm rcGrade rcClass belongsTo End Enum
転記先の「都道府県別」ワークシート各列の名称を定義している。
ワークシートとの対応は、
画像の通り。
同じ内容の列を、同じ識別子で呼び出せるようにしているので、書きやすく、読みやすくなっていると思う。
定数・変数の宣言
リスト2-1 定数の宣言
Public Const PROCESS_STYLE As Integer = 1 '……(1) Public Const PROCESS_PREF As Integer = 2 Public Const ORG_START_ROW As Integer = 2 '……(2) Public Const STYLE_START_ROW As Integer = 3 Public Const PREF_START_ROW As Integer = 3
(1)からの2行は、「戦法別」シートへの転記と「都道府県別」シートへの転記を切り替えるために渡す引数として使う。
(2)からの3行は、転記元の「選手データ」シート、「戦法別」シート、「都道府県別」シートそれぞれのデータ開始行を指定するためのもの。
後でシートに変更が加わった場合に、極力宣言セクションだけの変更にとどめるためにこうした。うまいやり方なのかどうかは分かりません。
リスト2-2 変数の宣言
Dim gblRacer As GambleRacer '……(1) Dim cdGetter As CodeGetter Dim racerData As Racer '……(2) Dim orgSh As Worksheet '……(3) Dim styleSh As Worksheet Dim prefSh As Worksheet
(1)からの2行は、それぞれGambleRacerクラス、CodeGetterクラスのインスタンス用の変数。
GambleRacerクラスについては、コチラ、CodeGetterクラスについてはコチラをご覧ください。
(2)はリスト1-1で定義したRacer型の変数。
(3)からの3行は、転記元の「選手データ」シート、転記先の「戦法別」、「都道府県別」シートそれぞれを格納する変数。多くの細かい処理をメインのコードから切り出した関係で、モジュールレベルでの宣言にした。その都度ワークシートを引数として持たせるのもメンドクサイので。これまた賢いやり方なのかどうかは分からん。
次回予告
思いのほか長くなってしまった。ここまでが下ごしらえ。クラスを作ったり、列挙型を作ったりしたことで、ほとんど思いつくままにコードが書けるようになったと思う。
ホントは今回で終わらせたかったんだけど、既にかなり長くなってしまったので、次こそは完成まで持って行きます。