Excel / VBA - Hoe maak je meerdere selectievakjes aan

Excel / VBA - Hoe maak je meerdere selectievakjes aan

In dit artikel leert u hoe u selectievakjes kunt maken die automatisch aan bepaalde cellen worden gekoppeld. VBA staat niet toe dat meerdere aankruisvakken tegelijk worden gemaakt. U kunt selectievakjes handmatig aan specifieke cellen koppelen (kopiëren / plakken). Voor elk exemplaar van uw selectievakje moet u een cel selecteren. Dit is nogal een saaie taak!

Ermee beginnen

Het besturingstype

  • Er zijn twee soorten selectievakjes in Excel: formulieren en ActiveX-besturingselementen. In dit artikel gebruiken we het formuliertype.

Voorkom dat uw Excel-werkblad te vol raakt met te veel items

  • Excel kan niet altijd goed overweg met een rommelige pagina (weergave), vooral als u van plan bent een werkmap op meerdere versies van Excel te gebruiken.

De selectievakjes maken

Voor elk van uw selectievakjes zijn er twee belangrijke cellen:
  • De positiecel : de cel waarin we ons selectievakje zullen plaatsen.
  • De gekoppelde cel : een cel waarin we het resultaat van ons selectievakje zullen retourneren.
  • Merk op dat in dit voorbeeld de positiecel en de gekoppelde cel hetzelfde zijn. Als u dit selectievakje in- of uitschakelt, wordt TRUE of FALSE geretourneerd in de gekoppelde cel. Helaas biedt Excel niet de mogelijkheid om meerdere selectievakjes in te stellen. Er zijn twee mogelijke oplossingen om deze beperking te ondervangen:

Oplossing 1

Deze eenvoudige VBA-code wanneer (handmatig) geactiveerd, genereert de selectievakjes samen met de gekoppelde cellen.

De code

  • Druk vanuit uw werkboek op ALT + F11 om toegang te krijgen tot de VBA-editor.
  • Klik op Invoegen> Module .
  • Kopieer en plak de onderstaande code:

 Optie Expliciete Sub Inserer_Cases_a_cocher_Liees () Dim-rngCel als bereik Dim ChkBx als CheckBox voor elke rngCel in selectie met rngCel.MergeArea.Cells If .Resize (1, 1) .Adres = rngCel.Address Then 'Giet ne pas afficher la valeur de la cellule liée, enlevez l'apostrophe en début de ligne suivante: '.NumberFormat = ";;;" Stel ChkBx in = ActiveSheet.CheckBoxes.Add (.Left, .Top, .Width, .Height) Met ChkBx 'valeur par défaut: .Value = xlOff' pourrait être True ou False 'cellule liée .LinkedCell = rngCel.MergeArea.Cells. Adres 'Texte de remplacement' .Characters.Text = "TITI" 'texte' .Text = "Toto" 'ou: .Caption = "Toto"' bordure: With .Border 'Style de ligne' .LineStyle = xlLineStyleNone 'ou xlContinuous 'ou xlDashDot ou xlDashDotDot ou xlDot' couleur '.ColorIndex = 3' 3 = rouge 'épaisseur du trait' .Weight = 4 End With 'accessibles aussi les propriétés. Locked, .Name, .Enabled etc ... End With End If Einde met volgende rngCel End Sub 

Om deze code te gebruiken:

Van elk blad van uw werkboek:
  • Selecteer het celbereik waarin u de selectievakjes wilt invoegen,
  • Druk op Alt + F8 .
  • Selecteer de module en klik op Uitvoeren .

Oplossing 2

In dit voorbeeld gebruiken we de Worksheet_SelectionChange -gebeurtenis als een trigger.

Deze gebeurtenis voert de code automatisch uit elke keer dat u een cel selecteert (binnen een bepaald bereik).

De voorgestelde code doorloopt alle cellen uit een geselecteerd bereik en als de cel in het lettertype "Wingdings" staat, wordt er een selectievakje ingevoegd.

De code

Om deze code in te voegen:
  • Open het blad van uw keuze.
  • Klik met de rechtermuisknop op het bladentabblad> Beeldcode .
  • Kopieer en plak de onderstaande code:

 Optie Expliciet Privé Sub Werkblad_selectie Wijzigen (ByVal-doel als bereik) 'Restriction de la plage. Giet une feuille entière mettez une apostrophe en début de la ligne suivante If Intersect (Union ([A2: A10], [D2: D10]), Target) Is Nothing Then Exit Sub 'plage A2: A10; D2: D10 If Target. Count = 1 Of Target.MergeCells Then If Target.Font.Name = "Wingdings" Then With Target 'cellule "liée" .Value = Abs (.Range ("A1"). Waarde - 1). NumberFormat = "" "þ ""; Algemeen; "" o ""; @ "Application.EnableEvents = False .Range (" A1 "). Offset (, 1). Selecteer Application.EnableEvents = True End with End If End If End Sub 

Om deze code te gebruiken:

  • Selecteer het celbereik.
  • Pas het lettertype Wingdings toe.
  • Klik ergens in uw werkblad en vervolgens op elk van de eerder geselecteerde cellen.

De code gebruiken met een beschermde werkmap / werkblad

 ActiveSheet.Protect "admin" 'admin = votre mot de passe' PUT UW CODE HIER ActiveSheet.Unprotect "admin" 

Als uw blad is beveiligd, moet u de beveiliging van de code opheffen. Dit kan worden bereikt met behulp van de onderstaande code:

Vorige Artikel Volgende Artikel

Top Tips