ExcelでActiveXリストボックスの選択内容を保存または保持するにはどうすればよいですか?
いくつかのリストボックスを作成し、その中で選択を行ったとします。しかし、ワークブックを閉じて再度開くと、これらのリストボックスのすべての選択が消えてしまいます。ワークブックを閉じたり再度開いたりするたびにリストボックス内の選択を保持したいと思いませんか?この記事の方法がお役に立つでしょう。
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
3. Alt + Qキーを押して、Microsoft Visual Basic for Applicationsウィンドウを閉じます。
4. ここで、ワークブックをExcelマクロ有効ワークブックとして保存する必要があります。[ファイル] > [名前を付けて保存] > [参照] をクリックしてください。
5. [名前を付けて保存] ダイアログボックスで、ワークブックを保存するフォルダを選択し、必要に応じて名前を変更し、[保存形式を指定] ドロップダウンリストで「Excelマクロ有効ワークブック」を選択し、最後に [保存] ボタンをクリックします。スクリーンショットをご覧ください:
リストボックスを更新するたびにワークブックを保存してください。その後、ワークブックを再開すると、以前のすべての選択内容がリストボックスに保持されます。
注釈: ワークブックを保存する際、「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%向上させ、毎日数百回のマウスクリックを減らします!