Excel / VBA - Kako ustvariti več potrditvenih polj
Excel / VBA - Kako ustvariti več potrditvenih polj
V tem članku boste izvedeli, kako ustvariti potrditvena polja, ki so samodejno povezana z določenimi celicami. VBA ne dovoljuje ustvarjanja večih potrditvenih polj hkrati. Potrditvena polja lahko ročno povežete s posameznimi celicami (Kopiraj / Prilepi). Za vsako kopijo vašega potrditvenega polja morate izbrati celico. To je precej dolgočasno delo!
Kako začeti
Vrsta nadzora
- V Excelovih obrazcih in kontrolnikih ActiveX sta dve vrsti potrditvenih polj. V tem članku bomo uporabili vrsto obrazca.
Izogibajte se zapiranju Excelovega lista preveč elementov
- Excel ne obravnava vedno dobro prenatrpane strani (zaslon), še posebej, če nameravate uporabiti delovni zvezek v več različicah Excela.
Ustvarjanje potrditvenih polj
Za vsako potrditveno polje sta dve pomembni celici:- Položajna celica : tista, ki jo bomo narisali.
- Povezana celica : tista, v kateri bomo vrnili rezultat našega potrditvenega polja.
- Upoštevajte, da sta v tem primeru pozicijska celica in povezana celica enaka. Če potrdite ali počistite to polje, se bo v povezani celici vrnila TRUE ali FALSE . Na žalost Excel ne omogoča nastavitve večih potrditvenih polj. Dve možni rešitvi za odpravo te omejitve sta:
Rešitev 1
Ta preprosta koda VBA, ko se (ročno) sproži, bo ustvarila potrditvena polja skupaj s povezanimi celicami.Koda
- V svojem delovnem zvezku pritisnite ALT + F11 za dostop do urejevalnika VBA.
- Kliknite Vstavi> Modul .
- Kopirajte in prilepite spodnjo kodo:
Možnost Izrecno Sub Inserer_Cases_a_cocher_Liees () Dim rngCel Kot Območje Dim ChkBx Kot CheckBox za vsakega rngCel V Izbira Z rngCel.MergeArea.Cells Če .Resize (1, 1) .Address = rngCel.Address Potem "Pour ne pas afficher ".NumberFormat =" ;;; " Nastavite ChkBx = ActiveSheet.CheckBoxes.Add (.Left, .Top, .Width, .Height) Z ChkBx 'valeur par défaut: .Value = xlOff' pourrait True True ali False 'cellule. Naslov 'Texte de remplacement' .Characters.Text = "TITI" 'texte' .Text = "Toto" 'ou: .Caption = "Toto" "bordure: Z .Border" Style de ligne ".LineStyle = xlLineStyleNo 'ou xlDashDot ali xlDashDotDot ali xlDot' couleur '.ColorIndex = 3' 3 = rouge 'epaisseur du trait' .Weight = 4 End Z 'accessibles aussi les propriétés .Locked, .Name, .Enabled etc ... End With End If Končajte z naslednjo rngCel End Sub
Če želite uporabiti to kodo:
Iz katerega koli lista vašega delovnega zvezka:- Izberite obseg celic, v katere želite vstaviti potrditvena polja,
- Pritisnite Alt + F8 .
- Izberite modul in kliknite Zaženi .
Rešitev 2
V tem primeru bomo kot sprožilec uporabili dogodek Worksheet_SelectionChange .Ta dogodek bo samodejno zagnal kodo vsakič, ko izberete celico (v določenem razponu).
Predlagana koda se bo prekrivala skozi vse celice iz izbranega območja in če bo celica v pisavi "Wingdings", bo vstavila potrditveno polje.
Koda
Če želite vstaviti to kodo:- Odprite list po vaši izbiri.
- Z desno miškino tipko kliknite zavihek lista> Prikaži kodo .
- Kopirajte in prilepite spodnjo kodo:
Možnost Eksplicitna zasebna poddelavnica_SectionChange (ByVal Target As Range) 'Omejitev de la plage. Če je Intersect (Unija ([A2: A10], [D2: D10]), Target) Nič, potem zapustite Sub 'plage A2: A10; D2: D10 Če je tarča. Count = 1 Ali Target.MergeCells Potem Če Target.Font.Name = "Wingdings" Potem s Target "cellule" liée .Value = Abs (.Range ("A1"). Vrednost - 1) .NumberFormat = "" " ""; General; "" o ""; @ "Application.EnableEvents = False. Razmerje (" A1 "). Offset (, 1) .Izberite Application.EnableEvents = True End s End, End End, End Sub
Če želite uporabiti to kodo:
- Izberite obseg celic.
- Uporabite pisavo Wingdings.
- Kliknite kjerkoli na delovnem listu in nato na vsako od predhodno izbranih celic.
Uporaba kode z zaščitenim delovnim zvezkom / listom
ActiveSheet.Protect "admin" 'admin = glasujte za passe' VKLJUČITE KODO TUKAJ ActiveSheet.Unprotect "admin"
Če je vaš list zaščiten, morate kodo odstraniti. To je mogoče doseči z uporabo spodnje kode: