Excel / VBA - Több jelölőnégyzet létrehozása
Excel / VBA - Több jelölőnégyzet létrehozása
Ebben a cikkben megtudhatja, hogyan hozhat létre jelölőnégyzeteket, amelyek automatikusan kapcsolódnak bizonyos cellákhoz. A VBA nem engedélyezi több jelölőnégyzet létrehozását egyszerre. A jelölőnégyzeteket manuálisan linkelheti egyes cellákba (Másolás / Beillesztés). A jelölőnégyzet minden egyes példányához ki kell választania egy cellát. Ez elég unalmas feladat!
Elkezdeni
A vezérlő típusa
- Kétféle jelölőnégyzet van az Excelben: űrlapok és ActiveX-vezérlők. Ebben a cikkben az űrlaptípust fogjuk használni.
Kerülje el, hogy az Excel lapot túl sok elemzel tegyük meg
- Az Excel nem mindig jól kezeli a zsúfolt oldalt (megjelenítést), különösen akkor, ha egy munkafüzetet szeretne használni az Excel több változatán.
A jelölőnégyzetek létrehozása
Mindegyik jelölőnégyzetnél két fontos cellája lesz:- A pozíciócella : az, amelyre jelöljük a jelölőnégyzetet.
- A kapcsolt cella : az egyik, amelyben visszajuttatjuk a jelölőnégyzet eredményét.
- Megjegyezzük, hogy ebben a példában a helyzetcella és a kapcsolt cellák azonosak. Ennek a négyzetnek az ellenőrzése vagy törlése a TRUE vagy FALSE értéket adja vissza a kapcsolt cellában. Sajnos az Excel nem ad lehetőséget arra, hogy több jelölőnégyzetet állítson be. A korlátozás leküzdésére két lehetséges megoldás létezik:
1. megoldás
Ez az egyszerű VBA-kód, amikor (manuálisan) aktiválódik, a csatolt cellákkal együtt létrehozza a jelölőnégyzeteket.A kód
- A munkafüzetből nyomja meg az ALT + F11 billentyűt a VBA szerkesztő eléréséhez.
- Kattintson a Beszúrás> Modul elemre.
- Másolja és illessze be az alábbi kódot:
Opció Kifejezett Sub Inserer_Cases_a_cocher_Liees () Dim rngCel as Range A ChkBx mint CheckBox minden rngCel számára Az rngCel.MergeArea.Cells kiválasztása esetén Ha .Resize (1, 1) .Address = rngCel.Address Ezután 'Pour ne pas affic the la celle liée, suurenevez l'apostrophe en début de ligne suivante: '.NumberFormat = ";;;" ChkBx = ActiveSheet.CheckBoxes.Add (.Left, .Top, .Width, .Height) beállítása ChkBx 'valeur par défaut: .Value = xlOff' pourrait être True ou 'cellule liée .LinkedCell = rngCel.MergeArea.Cells. 'Texte de remplacement' cím .Characters.Text = "TITI" 'texte' .Text = "Toto" 'ou: .Caption = "Toto"' határ:: .Border 'Style de ligne' .LineStyle = xlLineStyleNone 'ou xlContinuous 'xuDashDot ou xlDashDotDuOl xlDot' couleur '.ColorIndex = 3' 3 = rouge 'épaisseur du trait' .Weight = 4 End with 'accesssibles aussi les propriétés .Locked, .Name, .Enabled stb. Vége a következő rngCel befejezéssel
A kód használatához:
A munkafüzet bármely lapjáról:- Válassza ki azt a cellatartományt, amelybe be kívánja helyezni a jelölőnégyzeteket.
- Nyomja meg az Alt + F8 billentyűt .
- Válassza ki a modult és kattintson a Futtatás gombra.
2. megoldás
Ebben a példában a Worksheet_SelectionChange eseményt triggerként fogjuk használni.Ez az esemény automatikusan elindítja a kódot, amikor kiválaszt egy cellát (egy bizonyos tartományon belül).
A javasolt kód a kiválasztott tartomány összes celláján keresztül hurok, és ha a cella "Wingdings" betűtípusban van, akkor bejelöl egy jelölőnégyzetet.
A kód
A kód beillesztése:- Nyissa meg a kívánt lapot.
- Kattintson a jobb egérgombbal a lap lapjára> Nézet kód .
- Másolja és illessze be az alábbi kódot:
Opció Kifejezetten privát részmunkafüzet_választásKapcsolás (ByVal Target As Range) „Korlátozás de la plage. Ha nem keresztezi a láncot, ha nem keresztezi egymást (Unió ([A2: A10], [D2: D10]), cél) Nincs kilépés az A2 aloldalról: A10; D2: D10 Ha a cél. Count = 1 vagy Target.MergeCells Ezután ha Target.Font.Name = "Wingdings" Ezután a Target 'cellule "liée" .Value = Abs (.Range ("A1"). Érték - 1) .NumberFormat = "" "þ ""; Általános; "" o ""; @ "Alkalmazás.EnableEvents = Hamis. Változás (" A1 "). Eltolás (, 1). Alkalmazás kiválasztása.
A kód használatához:
- Válassza ki a cellatartományt.
- Alkalmazza a Wingdings betűtípust.
- Kattintson a munkalapon bárhol, majd minden korábban kiválasztott cellára.
A kód használata védett munkafüzet / lap segítségével
ActiveSheet.Protect "admin" 'admin = votre mot de passe' TESZT KÓDJÁT HERE ActiveSheet.Unprotect "admin"
Ha a lapja védett, meg kell védenie a kódot. Ezt az alábbi kód segítségével lehet elérni: