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

Cum se face ca o singură casetă de selectare să fie selectată într-un grup de casete de selectare din Excel?

După cum se arată în imaginea de mai jos, pentru un grup de casete de selectare listate în rândul 2, când selectați sau bifați doar o singură casetă de selectare, celelalte casete de selectare vor fi dezactivate. Cum se realizează? Codul VBA din acest articol vă poate ajuta.

Bifați o singură casetă de selectare pentru a fi selectată cu codul VBA


Bifați o singură casetă de selectare pentru a fi selectată cu codul VBA

Puteți rula codurile VBA de mai jos pentru a selecta o singură casetă de selectare dintr-un grup de casete de selectare de fiecare dată. Vă rugăm să faceți următoarele.

1. În primul rând, introduceți casetele de selectare după cum aveți nevoie. Aici, ar trebui să introduceți fișierul Casete de selectare ActiveX Control după cum se arată în următoarea captură de ecran:

2. Apoi apăsați Alt + Tastele F11 simultan pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.

3. În deschidere Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Modulul clasei.

4. Schimbați numele clasei în ClsChk în (Nume si Prenume) caseta din Proprietăţi , apoi copiați și lipiți codul VBA de mai jos în cel corespunzător Cod fereastră. Vedeți captura de ecran:

Cod VBA 1: bifați o singură casetă de selectare de fiecare dată

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. Acum faceți clic pe Insera > Module, apoi copiați și lipiți codul VBA de mai jos în Module fereastră.

Cod VBA 2: bifați o singură casetă de selectare de fiecare dată

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. apasă pe F5 tasta pentru a rula codul.

De acum înainte, când bifați oricare dintre casetele de selectare din foaia de lucru, celelalte casete de selectare vor fi dezactivate automat și o puteți debifa pentru a activa din nou toate casetele de selectare.

notițe: Dacă se adaugă o nouă casetă de selectare la grupul de casete de selectare, rulați din nou codul VBA pentru a activa din nou toate casetele de selectare. Ștergerea casetei de selectare din grupul de casete de selectare trebuie să reexecute și codul.


Rarticole încântate:


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (14)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut! Mulțumesc pentru acest ghid util! Am o întrebare suplimentară: lucrez atât cu coloane, cât și cu rânduri. Dacă valoarea unei casete de selectare este adevărată, toate casetele de selectare din același rând și coloană trebuie să fie dezactivate. Cum să fac asta? Cel mai bine, Morten
Acest comentariu a fost redus la minimum de moderatorul de pe site
când închid Excel și deschid din nou fișierul, casetele de selectare nu mai funcționează, cum repar acest lucru, pls?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Salvați registrul de lucru ca registru de lucru cu macrocomandă Excel pentru a salva codurile în registrul de lucru. Dar când redeschideți registrul de lucru, trebuie să intrați în fereastra de cod pentru a rula manual codul în fereastra Modul pentru a-l activa.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, există o cale de ocolire? Aș dori să folosesc acest lucru pentru mai multe persoane și sunt sigur că nu vor rula codul după deschidere....
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bonjour, Je suis dans la même situation. Este posibil ca modulul de clasă "ClsChk" să lanseze automat au demarrage ? 
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, am aceeași întrebare. Există vreo opțiune de a deschide Excel cu funcția funcțională?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, îmi pare rău pentru probleme. Puteți urma pașii de mai jos pentru a rezolva problema.1. Salvați registrul de lucru ca un Excel Macro-activat Caiet de lucru (Click Fișier > Salvează ca > selectați un folder de destinație > selectați "Cartea de lucru Excel Macro-Enabled" în Salvați ca tip lista derulantă > Economisiți);2. Adăugați următorul cod în Acest manual de lucru editor de cod așa cum se arată în captura de ecran de mai jos.;3. Salvați codul. Private Sub Workbook_Open()
La data de eroare CV următoare
ClsChk_Init
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
La data de eroare CV următoare
ClsChk_Init
End Sub

Private Sub Workbook_SheetChange(ByVal Sh ca obiect, ByVal Target ca interval)
La data de eroare CV următoare
ClsChk_Init
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
eroarea apare sub primul cod.
xObj.Object.Value = Fals
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Arnold, ai primit vreo cutie de prompturi? si ce versiune de Excel folosesti?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Funcționează bine dacă tot ceea ce utilizați sunt casetele de selectare.
Dacă adăugați alte elemente activeX și le alocați controale, se afișează eroarea menționată de Arnold.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Chiar trebuie să explicați cum să accesați numele clasei pentru a-l schimba. BTW oameni buni, este F4 pentru a deschide fereastra din partea stângă a ecranului și apoi editați numele clasei.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vreau să obțin această funcție doar rând cu rând și nu întreaga foaie. Cum ar trebui să repar puțin acest cod? Nu sunt prea familiarizat cu vba. Dacă se poate, vă rog să mă ajutați.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Min Ko Ko,
Dacă doriți să selectați o singură opțiune rând cu rând, vă recomand să utilizați combinația Buton de opțiune (Control formular) și Casetă de grup (Control formular).
1. Desenați doar o casetă de grup în foaia de lucru.
2. Păstrați caseta de grup selectată și apoi desenați butoanele de opțiuni în interiorul casetei.
3. Repetați pașii pentru a introduce o nouă casetă de grup și butoane de opțiuni într-un rând nou.
4. Deoarece caseta de grup are titlu și margini, puteți aplica codul VBA de mai jos în fereastra Cod modul pentru a ascunde toate titlurile și marginile casetelor de grup din foaia de lucru curentă.
Sub ToggleVisible()
Dim myGB ca GroupBox
Pentru fiecare myGB din ActiveSheet.GroupBoxes
myGB.Visible = Fals
În continuare myGB
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bonjour, Merci pour ce tuto tout fonctionne. Totuși, je suis obligé d'exécuter manuellement le "ClsChk" à fiecare dată pentru că aceasta funcționează, mon fișier este un fișier groupe pentru societatea, ar fi posibil să se lase automat? Merci d'avance.
Nu există comentarii postate aici încă
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL