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

Jak vytvořit pouze jedno zaškrtávací políčko ve skupině zaškrtávacích políček v aplikaci Excel?

Jak je ukázáno na níže uvedeném snímku obrazovky, pro skupinu zaškrtávacích políček uvedených v řádku 2 budou při zaškrtnutí nebo zaškrtnutí pouze jednoho zaškrtávacího políčka ostatní zaškrtávací políčka deaktivována. Jak toho dosáhnout? Kód VBA v tomto článku vám může pomoci.

S kódem VBA zaškrtněte pouze jedno zaškrtávací políčko


S kódem VBA zaškrtněte pouze jedno zaškrtávací políčko

Níže uvedené kódy VBA můžete spustit a vybrat pouze jedno zaškrtávací políčko ve skupině zaškrtávacích políček najednou. Postupujte prosím následovně.

1. Nejprve vložte zaškrtávací políčka podle potřeby. Zde byste měli vložit Zaškrtávací políčka ovládacího prvku ActiveX jak je zobrazeno následující screenshot:

2. Poté stiskněte Další + Klávesy F11 současně otevřete Microsoft Visual Basic pro aplikace okno.

3. V otvoru Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Vložit > Modul třídy.

4. Změňte název třídy na ClsChk v (Název produktu) pole Nemovitosti panelu a poté zkopírujte a vložte níže uvedený kód VBA do odpovídajícího Kód okno. Viz snímek obrazovky:

Kód VBA 1: Zaškrtněte pouze jedno zaškrtávací políčko

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. Nyní klikněte Vložit > Modul, poté zkopírujte a vložte níže uvedený kód VBA do Modul okno.

Kód VBA 2: Zaškrtněte pouze jedno zaškrtávací políčko

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. zmáčkni F5 klíč ke spuštění kódu.

Od této chvíle se při zaškrtnutí některého ze zaškrtávacích políček v listu automaticky deaktivují ostatní zaškrtávací políčka a zrušením jeho zaškrtnutí znovu aktivujete všechna zaškrtávací políčka.

Poznámka: Pokud je do skupiny zaškrtávacích políček přidáno nové zaškrtávací políčko, znovu spusťte kód VBA a znovu aktivujte všechna zaškrtávací políčka. Odstranění zaškrtávacího políčka ze skupiny zaškrtávacích políček musí také znovu spustit kód.


Rnadšené články:


Nejlepší kancelářské nástroje produktivity

Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než 300 výkonných funkcí. Podporuje Office / Excel 2007-2021 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Plné funkce 30denní bezplatná zkušební verze. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50%a snižuje stovky kliknutí myší každý den!
officetab dno
Komentáře (14)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Ahoj! Děkujeme za tento užitečný průvodce! Mám další otázku: Pracuji se sloupci i řádky. Pokud je jedna hodnota zaškrtávacího políčka pravdivá, všechna zaškrtávací políčka ve stejném řádku a sloupci musí být deaktivována. Jak to udělám? Nejlepší, Mortene
Tento komentář byl moderátorem webu minimalizován
když zavřu Excel a znovu otevřu soubor, zaškrtávací políčka přestanou fungovat, jak to prosím opravím?
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Uložte sešit jako sešit Excel s podporou maker, abyste mohli uložit kódy do sešitu. Ale když znovu otevřete sešit, musíte se dostat do okna kódu a ručně spustit kód v okně modulu, abyste jej aktivovali.
Tento komentář byl moderátorem webu minimalizován
Ahoj, jde to nějak obejít? Chtěl bych to použít pro více lidí a jsem si jistý, že po otevření nespustí kód....
Tento komentář byl moderátorem webu minimalizován
Bonjour, Je suis dans la même situace. Je možné, že modul třídy "ClsChk" selance automatiquement au démarrage ? 
Tento komentář byl moderátorem webu minimalizován
Ahoj, mám stejný dotaz Existuje nějaká možnost otevřít Excel s funkční funkcí?
Tento komentář byl moderátorem webu minimalizován
Ahoj, omlouvám se za potíže. K vyřešení problému můžete postupovat podle následujících kroků.1. Uložte sešit jako soubor Excel s podporou maker Sešit (klikněte Soubor > Uložit jako > vyberte cílovou složku > vyberte "Sešit se zvýšeným makra Excel"v Uložit jako typ rozevírací seznam > Uložit);2. Přidejte následující kód do Tato pracovní kniha editor kódu, jak je znázorněno na obrázku níže.;3. Uložte kód. Private Sub Workbook_Open()
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
Tento komentář byl moderátorem webu minimalizován
Ahoj,
chyba se objeví pod prvním kódem.
xObj.Object.Value = False
Tento komentář byl moderátorem webu minimalizován
Ahoj Arnolde, dostal jsi nějaký prompt box? a jakou verzi Excelu používáš?
Tento komentář byl moderátorem webu minimalizován
Funguje to dobře, pokud vše, co používáte, jsou zaškrtávací políčka.
Pokud přidáte jakékoli další položky activeX a přiřadíte jim ovládací prvky, vyvolá to chybu, o které se zmínil Arnold.
Tento komentář byl moderátorem webu minimalizován
Opravdu potřebujete vysvětlit, jak získat přístup k názvu třídy, abyste jej mohli změnit. BTW lidi, je to F4 k otevření okna na levé straně obrazovky a pak k úpravě názvu třídy.
Tento komentář byl moderátorem webu minimalizován
Chci získat tuto funkci jen řádek po řádku a ne celý sheet.How mám opravit tento kód alittle? Nejsem obeznámen s vba příliš much.If může, plz pomozte mi.
Tento komentář byl moderátorem webu minimalizován
Ahoj Min Ko Ko,
Pokud chcete vybrat pouze jednu možnost řádek po řádku, doporučuji vám použít kombinaci tlačítka Option (Form Control) a Group Box (Form Control).
1. Stačí do listu nakreslit Group Box.
2. Ponechte vybraný Group Box a poté nakreslete Option Buttons uvnitř boxu.
3. Opakujte kroky pro vložení nového pole skupiny a tlačítek možností do nového řádku.
4. Protože má skupinový rámeček nadpis a okraje, můžete použít níže uvedený kód VBA v okně Kód modulu a skrýt všechny názvy a okraje skupinových rámečků v aktuálním listu.
Sub ToggleVisible()
Dim myGB As GroupBox
Pro každý myGB v ActiveSheet.GroupBoxes
myGB.Visible = False
Další mojeGB
End Sub
Tento komentář byl moderátorem webu minimalizován
Bonjour, Merci pour ce tuto tout fonctionne. Je suis povinný 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.
Zatím zde nejsou žádné komentáře
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění

Sociální sítě

Copyright © 2009 - www.extendoffice.com. | Všechna práva vyhrazena. Poháněno ExtendOffice. | |. | Sitemap
Microsoft a logo Office jsou ochranné známky nebo registrované ochranné známky společnosti Microsoft Corporation ve Spojených státech a / nebo jiných zemích.
Chráněno Sectigo SSL