Hvordan laver man kun et afkrydsningsfelt, der skal markeres i en gruppe af afkrydsningsfelter i Excel?
Som vist nedenstående skærmbillede, for en gruppe af afkrydsningsfelter, der er opført i række 2, deaktiveres de andre afkrydsningsfelter, når der kun vælges eller markeres et afkrydsningsfelt. Hvordan opnås det? VBA-koden i denne artikel kan hjælpe dig.
Lav kun et afkrydsningsfelt, der skal markeres med VBA-kode
Lav kun et afkrydsningsfelt, der skal markeres med VBA-kode
Du kan køre nedenstående VBA-koder for kun at markere et afkrydsningsfelt i en afkrydsningsfeltgruppe pr. Gang. Gør som følger.
1. Indsæt først afkrydsningsfelterne efter behov. Her skal du indsætte ActiveX Control afkrydsningsfelter som følgende skærmbillede vist:
2. Tryk derefter på andre + F11 taster samtidigt for at åbne Microsoft Visual Basic til applikationer vindue.
3. I åbningen Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Klassemodul.
4. Skift klassens navn til ClsChk i (Navn) boks med Ejendomme ruden, og kopier og indsæt derefter nedenstående VBA-kode i den tilsvarende Kode vindue. Se skærmbillede:
VBA-kode 1: Marker kun et afkrydsningsfelt pr. Gang
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. Klik nu indsatte > Moduler, kopier og indsæt derefter nedenstående VBA-kode i Moduler vindue.
VBA-kode 2: Marker kun et afkrydsningsfelt pr. Gang
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. Tryk på F5 nøgle for at køre koden.
Fra nu af, når du markerer et af afkrydsningsfelterne i regnearket, deaktiveres de andre afkrydsningsfelter automatisk, og du kan fjerne markeringen for at aktivere alle afkrydsningsfelter igen.
Bemærk: Hvis der tilføjes nyt afkrydsningsfelt til afkrydsningsfeltgruppen, skal du køre VBA-koden igen for at aktivere alle afkrydsningsfelter igen. Sletning af afkrydsningsfeltet fra afkrydsningsfeltgruppen skal også køre koden igen.
Rophidsede artikler:
- Sådan filtreres data baseret på afkrydsningsfelt i Excel?
- Hvordan skjuler jeg afkrydsningsfeltet, når rækken er skjult i Excel?
- Hvordan fremhæves celle eller række med afkrydsningsfelt i Excel?
- Hvordan oprettes en rulleliste med flere afkrydsningsfelter i Excel?
- Hvordan indsættes datostempel i en celle, hvis der er markeret et afkrydsningsfelt i Excel?
Bedste kontorproduktivitetsværktøjer
Overlad dine Excel-færdigheder med Kutools til Excel, og oplev effektivitet som aldrig før. Kutools til Excel tilbyder over 300 avancerede funktioner for at øge produktiviteten og spare tid. Klik her for at få den funktion, du har mest brug for...
Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere
- Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
- Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
- Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!