ヘッダー行からEnum作成 ② よく使うパターンをセット
前回は、表等のヘッダー行からEnumを設定する文字列を作成してみた。
infoment.hatenablog.com
今日も、前回の続きから。
作りながら、何度もテスト用に入力するうち、その入力自体が
とても面倒くさくなってきた。
楽をするためのツールで、面倒臭くなってどうする。
ということで、頻繁に使用する仕様値を一括入力することとした。
ユーザーフォーム
今回の一括入力対象は、以下の三つだ。
なお、チェックボックスは以下のとおり命名した。都合が悪くなれば、
のちほど変更する。
- 最初の値を1とする:From1CheckBox
- 本ツールの既定値をセット:EnumDefaultCheckBox
まず、Enum作成ボタンを押したとき、From1CheckBoxにチェックが入っていた
場合の処理を追加する。
' Enum作成ボタンクリック。 Private Sub EnumButton_Click() ' Enum ~ End Enumまでの全行を格納する配列。 Dim arr() As Variant Select Case ItemListBox.ColumnCount Case 1 ItemListBox.ColumnCount = 4 ItemListBox.ColumnWidths = ColumnWidth EnumButton.Enabled = False Case Else Exit Sub End Select ' (1)Enum (2) [_eLast] (3) End Enum を追加するため、 ' Redim時の要素数を+3としている。 ' (2)は、Enum内の要素数を得るためなどに使用する。 ' 例. [_eLast] = 10 の場合、Enumは直前まで 0 ~ 9 で ' 10個の要素を持つことになる。 ' ※変数宣言と揃えるために、列方向の要素は0~3とする。 ReDim arr(0 To ItemListBox.ListCount - 1 + 3, 3) arr(0, 0) = "Public " arr(0, 1) = "Enum " & EnumNameTextBox Dim i As Long For i = 1 To UBound(arr) - 2 arr(i, 0) = Chr(9) & PrefixEnumCharacterTextBox.Value arr(i, 1) = ItemListBox.List(i - 1, 0) Next ' ↓今回追加↓ If From1CheckBox.Value Then arr(1, 2) = "=1" End If ' ↑今回追加↑ arr(i, 0) = Chr(9) arr(i, 1) = "[_eLast]" i = i + 1 arr(i, 0) = "End " arr(i, 1) = "Enum" ItemListBox.List = arr CopyButton.Enabled = True End Sub
EnumDefaultCheckBoxのクリックイベントがこちら。チェックの有無で、
既定値のセット/リセットを切り替えている。
' 本ツールの既定値をセットするチェックボックス。 ' ※既定値は、ユーザーで任意に変更して構わない。 Private Sub EnumDefaultCheckBox_Click() Select Case EnumDefaultCheckBox.Value Case True EnumNameTextBox = "列名" PrefixEnumCharacterTextBox = "en" From1CheckBox.Value = True Case False EnumNameTextBox = vbNullString PrefixEnumCharacterTextBox = vbNullString From1CheckBox.Value = False End Select End Sub
最後に、「編集内容を全て戻す」ボタンを押した際、
「本ツールの既定値をセット」チェックを外す処理を追加する。
' 選択範囲のラベル行をリストボックスにセット。 Private Sub ResetButton_Click() With ItemListBox .List = HeaderList .ColumnCount = 1 End With NewNameTextBox.Value = vbNullString CopyButton.Enabled = False EnumDefaultCheckBox.Value = False ' <--- 今回追加 End Sub
結果確認
それでは、実際に動作させて確認してみよう。
今回確認する内容は、以下のとおり。
- 本ツールの既定値を正しくセットできるか。
- 編集内容を全て戻すボタンで、1. が正しくリセットされるか。
上記の結果がこちら。
今回も、想定した内容を実現することが出来た。
本シリーズ最終回まであと2,3回(適当)。次回に続きます。
参考まで。