はじめに
ユーザーフォームのリストボックスにシートの表を表示した後、「特定の列の数値を3桁のゼロ埋めにしたい」「商品名の後ろに特定の文字列を追加したい」といったように、表示されている内容を整形・加工したい場合があります。
一度リストボックスに読み込んだデータを、VBAコードを使って直接書き換えることが可能です。これにより、元のシートのデータを変更することなく、フォーム上での見た目だけを分かりやすく調整することができます。
この記事では、リストボックスの項目をループ処理で一つずつ取得し、表示されている値を直接変更(再フォーマット)するための、実用的なテクニックを解説します。
リストボックスの値を変更するVBAサンプルコード
このマクロは、「フォーマット実行」ボタンがクリックされたときに、DataTableBox という名前のリストボックスに表示されている内容を整形します。
- 1列目(ID): 4桁のゼロ埋めにする (例:
12→0012) - 2列目(項目名): 末尾に
【済】を追加する - 3列目(数量): 3桁区切りのカンマを追加する (例:
1500→1,500)
ユーザーフォームのコード
' 「フォーマット実行」ボタン(FormatButton)がクリックされたときの処理
Private Sub FormatButton_Click()
'== 変数を定義します ==
Dim i As Long
' Withブロックで対象のリストボックス(DataTableBox)を明示
With Me.DataTableBox
'== リストの全行をループ処理(0行目はヘッダーと想定し、1行目から開始) ==
For i = 1 To .ListCount - 1
'--- 1列目(インデックス=0)の値をゼロ埋め4桁にフォーマット ---
.List(i, 0) = Format(.List(i, 0), "0000")
'--- 2列目(インデックス=1)の値に文字列を追加 ---
.List(i, 1) = .List(i, 1) & "【済】"
'--- 3列目(インデックス=2)の値を桁区切りにフォーマット ---
.List(i, 2) = Format(.List(i, 2), "#,##0")
Next i
End With
MsgBox "リストの表示をフォーマットしました。", vbInformation
End Sub
コードの解説
For i = 1 To .ListCount - 1
この For ループが、リストボックスの項目を順番に処理するための基本構造です。
.ListCount: リストボックスの総行数を返します。i = 1 To ...: リストのインデックスは0から始まりますが、ここでは1行目(インデックス0)が見出し行であると仮定し、2行目(インデックス1)から処理を開始しています。もし見出し行がなければi = 0 To .ListCount - 1とします。
.List(i, 0) = Format(...)
この一行が、リストの値を直接書き換える核心部分です。
.List(i, 0): 左辺と右辺の両方で使われています。- 右辺の
.List(i, 0)は、現在の値(例:12)を取得するために使われます。 - 左辺の
.List(i, 0)は、フォーマット後の新しい値(例:"0012")を**代入(設定)**するために使われます。
- 右辺の
Format(...): VBAのFormat関数は、数値や日付を指定した書式の文字列に変換します。"0000": 4桁のゼロ埋め。"#,##0": 3桁ごとのカンマ区切り。
このように、For ループと .List(行, 列) プロパティを組み合わせることで、リストボックス内のデータを自在に操作することができます。
まとめ
今回は、ユーザーフォームのリストボックスに表示されている内容を、後からVBAで変更する方法を解説しました。
.ListCountプロパティでリストの行数を取得し、ループの回数を決める。.List(行インデックス, 列インデックス)プロパティを使って、特定のセルの値を取得したり、新しい値を設定したりできる。Format関数を組み合わせることで、数値や日付の表示形式を整えることができる。
このテクニックは、シート上の元データはそのままに、フォーム上の表示だけをユーザーにとって見やすい形に整えたい場合に非常に有効です。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
