Note: The other languages of the website are Google-translated. Back to English

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 Fastigheter 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:


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

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!
officetab botten
Sortera kommentarer efter
Kommentarer (14)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej! Tack för denna användbara guide! Jag har en ytterligare fråga: Jag arbetar med både kolumner och rader. Om ett kryssrutavärde är sant måste alla kryssrutor i samma rad och kolumn inaktiveras. Hur gör jag det? Bästa, Morten
Denna kommentar minimerades av moderatoren på webbplatsen
När jag stänger Excel och öppnar filen igen slutar kryssrutorna att fungera, hur fixar jag detta?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Spara arbetsboken som en Excel-makroaktiverad arbetsbok för att spara koderna i arbetsboken. Men när du öppnar arbetsboken igen måste du komma in i kodfönstret för att manuellt köra koden i modulfönstret för att aktivera den.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, finns det en väg runt? Jag skulle vilja använda det här för flera personer, och jag är säker på att de inte kommer att köra koden efter öppning....
Denna kommentar minimerades av moderatoren på webbplatsen
Bonjour, Je suis dans la même situation. Est-il möjligt que le module de classe "ClsChk" se lance automatiquement au démarrage? 
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag har samma fråga. Finns det något alternativ att öppna Excel med funktionen som fungerar?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, förlåt för besväret. Du kan följa stegen nedan för att lösa problemet.1. Spara arbetsboken som en Excel Macro-aktiverad Arbetsbok (Klicka Fil > Spara som > välj en målmapp > välj "Excel Macro-Enabled Workbook"i Spara som rullgardinsmenyn > Save);2. Lägg till följande kod i Denna arbetsbok kodredigerare som visas i skärmdumpen nedan.;3. Spara koden. Privat underarbetsbok_Öppen()
On Error Resume Next
ClsChk_Init
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
ClsChk_Init
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
ClsChk_Init
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
felet visas under den första koden.
xObj.Object.Value = Falskt
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Arnold, fick du någon promptbox? och vilken Excel-version använder du?
Denna kommentar minimerades av moderatoren på webbplatsen
Det fungerar bra om allt du använder är kryssrutor.
Om du lägger till några andra ActiveX-objekt och tilldelar kontroller till dem, ger det felet Arnold nämnde.
Denna kommentar minimerades av moderatoren på webbplatsen
Du måste verkligen förklara hur du kommer åt klassnamnet för att ändra det. BTW gott folk, det är F4 för att öppna fönstret till vänster på skärmen och sedan redigera klassnamnet.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag vill få den här funktionen bara rad för rad och inte hela arket. Hur ska jag fixa den här koden lite? Jag är inte bekant med vba för mycket. Om kan, snälla hjälp mig.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Min Ko Ko,
Om du bara vill välja ett alternativ rad för rad, rekommenderar jag att du använder kombinationen av alternativknapp (formulärkontroll) och gruppruta (formulärkontroll).
1. Rita bara en gruppruta i arbetsbladet.
2. Håll grupprutan markerad och rita sedan alternativknappar inuti rutan.
3. Upprepa stegen för att infoga en ny gruppruta och alternativknappar i en ny rad.
4. Eftersom grupprutan har titel och ramar, kan du använda nedanstående VBA-kod i modulkodfönstret för att dölja alla titlar och kanter för grupprutor i det aktuella kalkylbladet.
Sub ToggleVisible()
Dim myGB As GroupBox
För varje myGB i ActiveSheet.GroupBoxes
myGB.Visible = Falskt
Nästa myGB
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Bonjour, Merci pour ce tuto tout fonctionne. Cependant, je suis obligé d'éxécuter manuellement le "ClsChk" à chaque fois pour que cela fonctionne, mon fichier est un fichier groupe pour la société, serait-il possible qu'il se lance automatiquement ? Merci d'avance.
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL