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 (Příjmení) 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:
- Jak filtrovat data na základě zaškrtávacího políčka v aplikaci Excel?
- Jak skrýt zaškrtávací políčko, když je řádek skrytý v aplikaci Excel?
- Jak zvýraznit buňku nebo řádek pomocí zaškrtávacího políčka v aplikaci Excel?
- Jak vytvořit rozevírací seznam s více zaškrtávacími políčky v aplikaci Excel?
- Jak vložit datové razítko do buňky, pokud je zaškrtnuto políčko v aplikaci Excel?
Nejlepší nástroje pro produktivitu v kanceláři
Rozšiřte své dovednosti Excel pomocí Kutools pro Excel a zažijte efektivitu jako nikdy předtím. Kutools for Excel nabízí více než 300 pokročilých funkcí pro zvýšení produktivity a úsporu času. Kliknutím sem získáte funkci, kterou nejvíce potřebujete...
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!