メインコンテンツへスキップ

ExcelでActiveXリストボックスの選択内容を保存または保持するにはどうすればよいですか?

Author: Siluvia Last Modified: 2025-05-23

いくつかのリストボックスを作成し、その中で選択を行ったとします。しかし、ワークブックを閉じて再度開くと、これらのリストボックスのすべての選択が消えてしまいます。ワークブックを閉じたり再度開いたりするたびにリストボックス内の選択を保持したいと思いませんか?この記事の方法がお役に立つでしょう。

ExcelでVBAコードを使用してActiveXリストボックスの選択内容を保存または保持する


ExcelでVBAコードを使用してActiveXリストボックスの選択内容を保存または保持する

以下のVBAコードは、ExcelのActiveXリストボックスの選択内容を保存または保持するのに役立ちます。次の手順に従ってください。

1. 保存したい選択内容を持つActiveXリストボックスが含まれているワークブックで、Alt + F11キーを同時に押してMicrosoft Visual Basic for Applicationsウィンドウを開きます。

2. Microsoft Visual Basic for Applicationsウィンドウで、左ペインにあるThisWorkbookをダブルクリックして、ThisWorkbookコードウィンドウを開きます。そして、次のVBAコードをコードウィンドウにコピーしてください。

VBAコード:ExcelでActiveXリストボックスの選択内容を保存する

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim I As Long
    Dim J As Long
    Dim K As Long
    Dim KK As Long
    Dim xSheet As Worksheet
    Dim xListBox As Object
    On Error GoTo Label
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    K = 0
    KK = 0
    If Not Sheets("ListBox Data") Is Nothing Then
        Sheets("ListBox Data").Delete
    End If
Label:
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "ListBox Data"
    Set xSheet = Sheets("ListBox Data")
    For I = 1 To Sheets.Count
        For Each xListBox In Sheets(I).OLEObjects
            If xListBox.Name Like "ListBox*" Then
                With xListBox.Object
                For J = 0 To .ListCount - 1
                    If .Selected(J) Then
                        xSheet.Range("A1").Offset(K, KK).Value = "True"
                    Else
                        xSheet.Range("A1").Offset(K, KK).Value = "False"
                    End If
                    K = K + 1
                Next
                End With
                K = 0
                KK = KK + 1
            End If
        Next
    Next
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Private Sub Workbook_Open()
    Dim I As Long
    Dim J As Long
    Dim KK As Long
    Dim xRg As Range
    Dim xCell As Range
    Dim xListBox As Object
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    KK = 0
    For I = 1 To Sheets.Count - 1
        For Each xListBox In Sheets(I).OLEObjects
            If xListBox.Name Like "ListBox*" Then
                With xListBox.Object
                    Set xRg = Intersect(Sheets("ListBox Data").Range("A1").Offset(0, KK).EntireColumn, Sheets("ListBox Data").UsedRange)
                    For J = 1 To .ListCount
                        Set xCell = xRg(J)
                        If xCell.Value = "True" Then
                            .Selected(J - 1) = True
                        End If
                    Next
                    KK = KK + 1
                End With
            End If
        Next
    Next
    Sheets("ListBox Data").Delete
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

a screenshot showing how to use the VBA code

3. Alt + Qキーを押して、Microsoft Visual Basic for Applicationsウィンドウを閉じます。

4. ここで、ワークブックをExcelマクロ有効ワークブックとして保存する必要があります。[ファイル] > [名前を付けて保存] > [参照] をクリックしてください。

a screenshot of opening the Save As dialog box

5. [名前を付けて保存] ダイアログボックスで、ワークブックを保存するフォルダを選択し、必要に応じて名前を変更し、[保存形式を指定] ドロップダウンリストで「Excelマクロ有効ワークブック」を選択し、最後に [保存] ボタンをクリックします。スクリーンショットをご覧ください:

a screenshot of saving the workbook as an Excel Macro-Enabled Workbook

リストボックスを更新するたびにワークブックを保存してください。その後、ワークブックを再開すると、以前のすべての選択内容がリストボックスに保持されます。

注釈: ワークブックを保存する際、「ListBox Data」という名前のワークシートが、ワークブック内のすべてのワークシートの最後に自動的に作成されます。このワークシートは無視してください。ワークブックが閉じられると自動的に消えるためです。


最高のオフィス生産性ツール

🤖 Kutools AI アシスタント: データ分析を革命化する: インテリジェント実行   |  コード生成  |  カスタム数式の作成  |  データを分析しグラフを生成  |  拡張機能を呼び出す
人気の機能: 重複を見つけてハイライトまたはマーキング   |  空白行を削除   |  データを失わずに列またはセルを統合   |   丸める ...
スーパーLOOKUP: 複数条件のVLookup    複数値のVLookup  |   複数シートの検索   |   ファジーマッチ ....
高度なドロップダウンリスト: ドロップダウンリストを迅速に作成   |  依存ドロップダウンリスト   |  マルチセレクトドロップダウンリスト ....
列管理: 特定の数の列を追加  |  列を移動  |  非表示列の可視ステータスを切り替え  |  範囲と列を比較 ...
注目の機能: グリッドフォーカス   |  デザインビュー   |   強化された数式バー    ワークブック & ワークシート管理   |  オートテキスト ライブラリ (Auto Text)   |  日付ピッカー   |  データの統合   |  セルの暗号化/復号化    リストで電子メールを送信   |  スーパーフィルター   |   特殊フィルタ (太字/斜体/取り消し線をフィルタリング...) ...
トップ15のツールセット12 のテキストツール (テキストの追加, 特定の文字を削除, ...)  |  50以上 のグラフ の種類 (ガントチャート, ...)  |  40以上の実用的な 数式 (誕生日に基づいて年齢を計算する, ...)  |  19 の挿入ツール (QRコードの挿入, パスから画像を挿入, ...)  |  12 の変換ツール (単語に変換する, 通貨変換, ...)  |  7 の統合 & セルの分割ツール (高度な行のマージ, セルの分割, ...)  |  ...さらに多く

Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、300以上の高度な機能を提供し、生産性を向上させ、保存時間を節約します。  最も必要な機能を入手するにはここをクリック...


Office TabはOfficeにタブインターフェイスをもたらし、作業を非常に簡単にします

  • Word、Excel、PowerPoint、Publisher、Access、Visio、Projectでタブ付きの編集と読み取りを有効にします。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を50%向上させ、毎日数百回のマウスクリックを減らします!