Hur sparar eller behåller du val av ActiveX-listrutor i Excel?
Om du antar att du har skapat några listrutor och gjort val i listrutorna, är alla val av dessa listrutor borta när arbetsboken stängs och öppnas igen. Vill du behålla val som gjorts i listrutor när du stänger och öppnar arbetsboken igen? Metoden i den här artikeln kan hjälpa dig.
Spara eller behåll val av ActiveX-listrutor med VBA-kod i Excel
Spara eller behåll val av ActiveX-listrutor med VBA-kod i Excel
Nedanstående VBA-kod kan hjälpa dig att spara eller behålla val om ActiveX-listrutor i Excel. Gör så här.
1. I arbetsboken innehåller ActiveX-listrutorna som du vill behålla markeringen, tryck på andra + F11 samtidigt för att öppna Microsoft Visual Basic för applikationer fönster.
2. I Microsoft Visual Basic för applikationer dubbelklicka Denna arbetsbok i den vänstra rutan för att öppna Denna arbetsbok Koda fönster. Kopiera sedan följande VBA-kod till kodfönstret.
VBA-kod: Spara val av ActiveX-listrutor i 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. tryck på andra + Q för att stänga Microsoft Visual Basic för applikationer fönster.
4. Nu måste du spara arbetsboken som en Excel Macro-aktiverad arbetsbok. var god klicka Fil > Spara som > Bläddra.
5. I Spara som dialogrutan, välj en mapp för att spara arbetsboken, byt namn på den efter behov, välj Excel Macro-Enabled Workbook i Spara som rullgardinsmenyn och klicka slutligen på Save knapp. Se skärmdump:
Spara arbetsboken varje gång du uppdaterar listrutorna. Då kommer alla tidigare val att behållas i listrutorna efter att arbetsboken har öppnats igen.
Anmärkningar: När du sparar arbetsboken visas ett kalkylblad med namnet "ListBox Data” kommer att skapas automatiskt i slutet av alla kalkylblad i din arbetsbok, vänligen ignorera detta kalkylblad eftersom det försvinner automatiskt när arbetsboken stängs.
Bästa kontorsproduktivitetsverktyg
Uppgradera dina Excel-färdigheter med Kutools för Excel och upplev effektivitet som aldrig förr. Kutools för Excel erbjuder över 300 avancerade funktioner för att öka produktiviteten och spara tid. Klicka här för att få den funktion du behöver mest...
Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare
- Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
- Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
- Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!