【VBA】リストボックスの表示内容(値)をマクロで変更・再フォーマットする方法

目次

はじめに

ユーザーフォームのリストボックスにシートの表を表示した後、「特定の列の数値を3桁のゼロ埋めにしたい」「商品名の後ろに特定の文字列を追加したい」といったように、表示されている内容を整形・加工したい場合があります。

一度リストボックスに読み込んだデータを、VBAコードを使って直接書き換えることが可能です。これにより、元のシートのデータを変更することなく、フォーム上での見た目だけを分かりやすく調整することができます。

この記事では、リストボックスの項目をループ処理で一つずつ取得し、表示されている値を直接変更(再フォーマット)するための、実用的なテクニックを解説します。


リストボックスの値を変更するVBAサンプルコード

このマクロは、「フォーマット実行」ボタンがクリックされたときに、DataTableBox という名前のリストボックスに表示されている内容を整形します。

  • 1列目(ID): 4桁のゼロ埋めにする (例: 120012)
  • 2列目(項目名): 末尾に 【済】 を追加する
  • 3列目(数量): 3桁区切りのカンマを追加する (例: 15001,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代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次