Hur gör man bara en kryssruta som ska markeras i en grupp av kryssrutor i Excel?
Som nedanstående skärmdump visas, för en grupp av kryssrutor i rad 2, kommer de andra kryssrutorna att inaktiveras när du bara markerar eller markerar en kryssruta. Hur uppnår man det? VBA-koden i den här artikeln kan hjälpa dig.
Gör bara en kryssruta för att vara markerad med VBA-kod
Gör bara en kryssruta för att vara markerad med VBA-kod
Du kan köra nedanstående VBA-koder för att bara markera en kryssruta i en kryssrutagrupp per gång. Gör så här.
1. Först och främst, sätt i kryssrutorna efter behov. Här bör du infoga Kryssrutor för ActiveX-kontroll som följande skärmdump visas:
2. Tryck sedan på andra + F11-tangenter samtidigt för att öppna Microsoft Visual Basic för applikationer fönster.
3. I öppningen Microsoft Visual Basic för applikationer fönstret klickar Insert > Klassmodul.
4. Ändra klassnamnet till ClsChk i (Namn ) rutan med Våra Bostäder och sedan kopiera och klistra in nedanstående VBA-kod i motsvarande Koda fönster. Se skärmdump:
VBA-kod 1: Markera bara en kryssruta per gång
Option Explicit
Public WithEvents Chk As MSForms.CheckBox
Private Sub Chk_Click()
Call SelOneCheckBox(Chk)
End Sub
Sub SelOneCheckBox(Target As Object)
Dim xObj As Object
Dim I As String
Dim n As Integer
If Target.Object.Value = True Then
I = Right(Target.Name, Len(Target.Name) - 8)
For n = 1 To ActiveSheet.OLEObjects.Count
If n <> Int(I) Then
Set xObj = ActiveSheet.OLEObjects.Item(n)
xObj.Object.Value = False
xObj.Object.Enabled = False
End If
Next
Else
I = Right(Target.Name, Len(Target.Name) - 8)
For n = 1 To ActiveSheet.OLEObjects.Count
If n <> Int(I) Then
Set xObj = ActiveSheet.OLEObjects.Item(n)
xObj.Object.Enabled = True
End If
Next
End If
End Sub
5. Klicka nu Insert > Modulerna, kopiera och klistra in nedanstående VBA-kod i Modulerna fönster.
VBA-kod 2: Markera bara en kryssruta per gång
Dim xCollection As New Collection
Public Sub ClsChk_Init()
Dim xSht As Worksheet
Dim xObj As Object
Dim xChk As ClsChk
Set xSht = ActiveSheet
Set xCollection = Nothing
For Each xObj In xSht.OLEObjects
If xObj.Name Like "CheckBox**" Then
Set xChk = New ClsChk
Set xChk.Chk = CallByName(xSht, xObj.Name, VbGet)
xCollection.Add xChk
End If
Next
Set xChk = Nothing
End Sub
6. tryck på F5 för att köra koden.
Från och med nu, när du markerar någon av kryssrutorna i kalkylbladet, kommer de andra kryssrutorna att inaktiveras automatiskt och du kan avmarkera den för att aktivera alla kryssrutor igen.
Anmärkningar: Om ny kryssruta läggs till i kryssrutan, vänligen kör om VBA-koden för att aktivera alla kryssrutor igen. Att ta bort kryssrutan från kryssrutan måste också köra om koden.
Rupphetsade artiklar:
- Hur filtrerar jag data baserat på kryssrutan i Excel?
- Hur döljer jag kryssrutan när raden är dold i Excel?
- Hur markerar jag cell eller rad med kryssrutan i Excel?
- Hur skapar jag en listruta med flera kryssrutor i Excel?
- Hur infogar jag datumstämpel i en cell om det är markerat i kryssrutan i Excel?
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!