How to save or retain selections of ActiveX list boxes in Excel?
Supposing you have created some list boxes and made selections in the list boxes, however, all selections of these list boxes are gone when close and reopen the workbook. Do you want to retain selections made in list boxes whenever close and reopen the workbook? The method in this article can help you.
- Reuse Anything: Add the most used or complex formulas, charts and anything else to your favorites, and quickly reuse them in the future.
- More than 20 text features: Extract Number from Text String; Extract or Remove Part of Texts; Convert Numbers and Currencies to English Words.
- Merge Tools: Multiple Workbooks and Sheets into One; Merge Multiple Cells/Rows/Columns Without Losing Data; Merge Duplicate Rows and Sum.
- Split Tools: Split Data into Multiple Sheets Based on Value; One Workbook to Multiple Excel, PDF or CSV Files; One Column to Multiple Columns.
- Paste Skipping Hidden/Filtered Rows; Count And Sum by Background Color; Send Personalized Emails to Multiple Recipients in Bulk.
- Super Filter: Create advanced filter schemes and apply to any sheets; Sort by week, day, frequency and more; Filter by bold, formulas, comment...
- More than 300 powerful features; Works with Office 2007-2019 and 365; Supports all languages; Easy deploying in your enterprise or organization.
The below VBA code can help you saving or retaining selections if ActiveX list boxes in Excel. Please do as follows.
1. In the workbook contains the ActiveX list boxes you want to keep the selections, press the Alt + F11 keys simultaneously to open the Microsoft Visual Basic for Applications window.
2. In the Microsoft Visual Basic for Applications window, double-click ThisWorkbook in the left pane to open the ThisWorkbook Code window. And then copy the following VBA code into the code window.
VBA code: Save selections of ActiveX list boxes in Excel
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. Press the Alt + Q keys to close the Microsoft Visual Basic for Applications window.
4. Now you need to save the workbook as an Excel Macro-enabled workbook. Please click File > Save As > Browse.
5. In the Save As dialog box, select a folder to save the workbook, rename it as you need, select Excel Macro-Enabled Workbook in the Save as type dropdown list, and finally click the Save button. See screenshot:
Please save the workbook every time when you update the list boxes. Then all previous selections will be kept in the list boxes after reopening the workbook.
Note: When saving the workbook, a worksheet named “ListBox Data” will be created automatically at the end of all worksheets of your workbook, please ignore this worksheet because it will disappear automatically when the workbook is closed.
You are guest
or post as a guest, but your post won't be published automatically.
- To post as a guest, your comment is unpublished.· 11 months agoHi - Is there any way to prevent the "ListBox Data" tab from opening when you save the file? We're trying to send this to users but every time I save it opens the ListBox Data tab and then I can't save it with the primary tab open - which is confusing for users.