ヘッダー行から変数作成 ③ 変数宣言
前回は、VBEに貼り付けてもエラーにならないよう、変数名から禁則文字を少しだけ除去してみた。
infoment.hatenablog.com
今日も、前回の続きから。
それでは、今日はリストの変数名から
DIm 〇〇 As △△
の形状に変形させてみよう。といっても、文字列を前後に追加すると、
以下の変更時に少々面倒だ。
- 宣言子(DimやPublicなど)
- 変数の型(StringやLongなど)
そこで、リストボックスの列数を1から4に変更し、各列に分けて
表示することにした。
- 1列目 宣言子
- 2列目 変数名
- 3列目 As
- 4列目 変数の型
ユーザーフォーム
列の数を増やす時、例えば「As」は必要最低限の幅があれば良い。
一方で、変数名にはそれなりの幅が欲しい。
そこで、リストボックスの列幅を、列数に合わせて取得することにした。
' リストボックスの列数に合わせて列幅変更。 Private Property Get ColumnWidth() As String Select Case ItemListBox.ColumnCount Case 1 ColumnWidth = "280pt" Case Else ColumnWidth = "40pt;100pt;20pt" End Select End Property
次いで、変数宣言文字列作成用のボタンを配置。
名前は、DeclarationButton とした。都合が悪ければ変更する。
文字列作成後、複数列を同時選択して宣言子を変更したい。
ということで、リストボックスのMultiSelectプロパティも変更する。
Private Sub DeclarationButton_Click() Dim arr As Variant Select Case ItemListBox.ColumnCount Case 1 arr = ItemListBox.List ItemListBox.ColumnCount = 4 ItemListBox.ColumnWidths = ColumnWidth ItemListBox.MultiSelect = fmMultiSelectMulti Case Else Exit Sub End Select ReDim Preserve arr(ItemListBox.ListCount - 1, 3) Dim i As Long For i = 0 To UBound(arr) arr(i, 1) = arr(i, 0) arr(i, 0) = "Dim" arr(i, 2) = "As" arr(i, 3) = "String" Next ItemListBox.List = arr End Sub
なお、リストボックス.List で得られる配列が、行列ともに0から始まる
二次元配列であることに注意が必要。
結果確認
それでは、昨日と同様「なんちゃって個人情報」で確認。
とりあえず、想定通りの結果を得た。
次回は、選択行の宣言子および型変更に挑戦です。
参考まで。