Hur avmarkerar man en annan kryssruta när en kryssruta är markerad i Excel?
Som visas i gif-filen nedan, anta att det finns en inköpslista som måste slutföras av dig. När du kontrollerar listan upptäcker du att de markerade objekten i vissa kategorier överskrider budgeten och måste väljas om. Eftersom listan är för lång behöver du nu ett mer effektivt sätt att automatiskt avmarkera den ursprungliga kryssrutan när en ny kryssruta är markerad i en kategori. Denna handledning visar metoden steg-för-steg för att hjälpa dig att få det gjort.
Avmarkera en annan kryssruta när en ny kryssruta är markerad med VBA-kod
Avmarkera en annan kryssruta när en ny kryssruta är markerad med VBA-kod
Som visas i demon ovan, namnges tio kryssrutor Kryssruta 1, Kryssruta 2, Kryssruta 3, ..., Kryssruta 10 är indelade i 3 grupper och placerade i olika kategorier i tabellen.
I det här exemplet är Checkbox1, 2, 3 i en grupp, Checkbox4, 5, 6, 7 är i en grupp och Checkbox8, 9,10 är i samma grupp. I varje grupp får endast en kryssruta markeras åt gången. När en kryssruta är markerad, avmarkeras en annan kryssruta automatiskt.
Låt oss nu se hur du använder följande VBA-kod för att lösa detta problem.
1. Högerklicka på arkfliken och klicka Visa kod från snabbmenyn.
2. I det öppnade Microsoft Visual Basic för applikationer fönstret, klistra in följande VBA-kod i Blad (kod) fönster.
VBA-kod: Avmarkera en annan kryssruta när en ny kryssruta är markerad
Dim xBol As Boolean
'Updated by Extendoffice 20220816
Private Sub CheckBox1_Change()
SetCheckBoxes "CheckBox1"
End Sub
Private Sub CheckBox2_Change()
SetCheckBoxes "CheckBox2"
End Sub
Private Sub CheckBox3_Change()
SetCheckBoxes "CheckBox3"
End Sub
Private Sub CheckBox4_Change()
SetCheckBoxes "CheckBox4"
End Sub
Private Sub CheckBox5_Change()
SetCheckBoxes "CheckBox5"
End Sub
Private Sub CheckBox6_Click()
SetCheckBoxes "CheckBox6"
End Sub
Private Sub CheckBox7_Click()
SetCheckBoxes "CheckBox7"
End Sub
Private Sub CheckBox8_Click()
SetCheckBoxes "CheckBox8"
End Sub
Private Sub CheckBox9_Click()
SetCheckBoxes "CheckBox9"
End Sub
Private Sub CheckBox10_Click()
SetCheckBoxes "CheckBox10"
End Sub
Private Function SetCheckBoxes(mCheckBoxName As String)
Dim x As Long
Dim xAllArr
Dim xArrItem
Dim xI, xJ
If Not xBol Then Exit Function
'In the following line, the checkboxes enclosed in double quotes belong to the same group, and each checkbox is separated by a comma. To add more checkbox groups, please enclose the checkboxes in new double quotes.
xAllArr = Array("CheckBox1,CheckBox2,CheckBox3", "CheckBox4,CheckBox5,CheckBox6,CheckBox7", "CheckBox8,CheckBox9,CheckBox10")
For xI = LBound(xAllArr) To UBound(xAllArr)
If InStr(xAllArr(xI), mCheckBoxName) > 0 Then
xBol = False
xArrItem = Split(xAllArr(xI), ",")
For xJ = LBound(xArrItem) To UBound(xArrItem)
If xArrItem(xJ) <> mCheckBoxName Then
Me.OLEObjects(xArrItem(xJ)).Object.Value = False
End If
Next
End If
Next
xBol = True
End Function
Private Sub Worksheet_Activate()
xBol = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xBol = True
End Sub
Anmärkningar:
3. tryck på andra + Q för att stänga Microsoft Visual Basic för applikationer fönster.
När du sedan markerar en ny kryssruta i en grupp, kommer den ursprungliga kryssrutan att avmarkeras automatiskt som visas i gif-filen nedan.
Demo: Avmarkera en annan kryssruta när en kryssruta är markerad i Excel
Kutools för Excel innehåller 300+ kraftfulla funktioner för Microsoft Excel. Gratis att prova utan begränsning på 30 dagar. Ladda ner nu!
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!