¿Cómo guardar o conservar las selecciones de los cuadros de lista ActiveX en Excel?
Supongamos que has creado algunos cuadros de lista y has realizado selecciones en ellos, sin embargo, todas las selecciones de estos cuadros de lista desaparecen al cerrar y volver a abrir el libro. ¿Deseas conservar las selecciones realizadas en los cuadros de lista cada vez que cierres y abras el libro? El método en este artículo puede ayudarte.
Guardar o conservar las selecciones de los cuadros de lista ActiveX con código VBA en Excel
Guardar o conservar las selecciones de los cuadros de lista ActiveX con código VBA en Excel
El siguiente código VBA puede ayudarte a guardar o conservar las selecciones de los cuadros de lista ActiveX en Excel. Por favor, sigue los pasos a continuación.
1. En el libro que contiene los cuadros de lista ActiveX en los que deseas conservar las selecciones, presiona simultáneamente las teclas Alt + F11 para abrir la ventana de Microsoft Visual Basic para Aplicaciones.
2. En la ventana de Microsoft Visual Basic para Aplicaciones, haz doble clic en ThisWorkbook en el panel izquierdo para abrir la ventana de código de ThisWorkbook. Luego, copia el siguiente código VBA en la ventana de código.
Código VBA: Guardar selecciones de cuadros de lista ActiveX en 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. Presiona las teclas Alt + Q para cerrar la ventana de Microsoft Visual Basic para Aplicaciones.
4. Ahora necesitas guardar el libro como un libro de Excel habilitado para macros. Haz clic en Archivo > Guardar como > Examinar.
5. En el cuadro de diálogo Guardar como, selecciona una carpeta para guardar el libro, cámbiale el nombre según sea necesario, selecciona Libro de Excel habilitado para macros en la lista desplegable Especificar formato de guardado y, finalmente, haz clic en el botón Guardar. Ver captura de pantalla:
Guarda el libro cada vez que actualices los cuadros de lista. Luego, todas las selecciones anteriores se mantendrán en los cuadros de lista después de volver a abrir el libro.
Nota: Al guardar el libro, se creará automáticamente una hoja de trabajo llamada “ListBox Data” al final de todas las hojas de trabajo de tu libro; ignora esta hoja de trabajo porque desaparecerá automáticamente cuando se cierre el libro.
Las mejores herramientas de productividad para Office
Impulsa al máximo tu dominio de Excel con Kutools para Excel y experimenta una eficiencia sin precedentes. Kutools para Excel ofrece más de300 funciones avanzadas para potenciar la productividad y ahorrar tiempo.Haz clic aquí para obtener la función que más necesitas...
Office Tab aporta una interfaz de pestañas a Office y hace tu trabajo mucho más sencillo
- Habilita la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
- Abre y crea varios documentos en nuevas pestañas de la misma ventana, en vez de en nuevas ventanas.
- ¡Aumenta tu productividad hasta un50% y reduce cientos de clics de ratón cada día!