Excel / VBA - So erstellen Sie mehrere Kontrollkästchen

Excel / VBA - So erstellen Sie mehrere Kontrollkästchen

In diesem Artikel erfahren Sie, wie Sie Kontrollkästchen erstellen, die automatisch mit bestimmten Zellen verknüpft werden. In VBA können nicht mehrere Kontrollkästchen gleichzeitig erstellt werden. Sie können Kontrollkästchen manuell mit bestimmten Zellen verknüpfen (Kopieren / Einfügen). Für jede Kopie Ihres Kontrollkästchens müssen Sie eine Zelle auswählen. Das ist eine ziemlich mühsame Aufgabe!

Fertig machen

Der Steuerungstyp

  • In Excel gibt es zwei Arten von Kontrollkästchen: Formulare und ActiveX-Steuerelemente. In diesem Artikel verwenden wir den Formulartyp.

Vermeiden Sie es, Ihre Excel-Tabelle mit zu vielen Elementen zu überladen

  • Excel kann eine überfüllte Seite (Anzeige) nicht immer gut verarbeiten, insbesondere wenn Sie beabsichtigen, eine Arbeitsmappe in mehreren Excel-Versionen zu verwenden.

Kontrollkästchen erstellen

Für jedes Ihrer Kontrollkästchen gibt es zwei wichtige Zellen:
  • Die Positionszelle : Die Zelle, in die wir unser Kontrollkästchen zeichnen.
  • Die verknüpfte Zelle : Eine, in der wir das Ergebnis unseres Kontrollkästchens zurückgeben.
  • Beachten Sie, dass in diesem Beispiel die Positionszelle und die verknüpfte Zelle identisch sind. Wenn Sie dieses Kontrollkästchen aktivieren oder deaktivieren, wird in der verknüpften Zelle WAHR oder FALSCH zurückgegeben . Leider bietet Excel nicht die Möglichkeit, mehrere Kontrollkästchen einzurichten. Es gibt zwei mögliche Lösungen, um diese Einschränkung zu überwinden:

Lösung 1

Wenn dieser einfache VBA-Code (manuell) ausgelöst wird, werden die Kontrollkästchen zusammen mit den verknüpften Zellen generiert.

Der Code

  • Drücken Sie in Ihrer Arbeitsmappe ALT + F11, um auf den VBA-Editor zuzugreifen.
  • Klicken Sie auf Einfügen> Modul .
  • Kopieren Sie den folgenden Code und fügen Sie ihn ein:

 Option Explicit Sub Inserer_Cases_a_cocher_Liees () rngCel als Bereich abmessen ChkBx als Kontrollkästchen für jedes rngCel bei Auswahl mit rngCel.MergeArea.Cells If .Resize (1, 1) .Address = rngCel.Address Then 'Pour ne pas afficher la valeur de la cell liée, enlevez l'apostrophe en début de ligne suivante: '.NumberFormat = ";;;" Setze ChkBx = ActiveSheet.CheckBoxes.Add (.Left, .Top, .Widge, .Height) Mit ChkBx 'valeur par défaut: .Value = xlOff' pourrait être Wahr oder Falsch 'cellule liée .LinkedCell = rngCel.MergeArea.Cell. Adresse 'Texte de remplacement' .Characters.Text = "TITI" 'texte' .Text = "Toto" 'oder: .Caption = "Toto"' Bordüre: Mit .Border 'Style de ligne' .LineStyle = xlLineStyleNone 'oder xlContinuous 'ou xlDashDot ou xlDashDotDot ou xlDot' couleur '.ColorIndex = 3' 3 = rouge 'épaisseur du trait' .Weight = 4 End With 'Eingabehilfen aussi les propriétés .Locked, .Name, .Enabled etc ... End With End If End With Next rngCel End Sub 

So verwenden Sie diesen Code:

Von jedem Blatt Ihrer Arbeitsmappe:
  • Wählen Sie den Zellenbereich aus, in den Sie die Kontrollkästchen einfügen möchten.
  • Drücken Sie Alt + F8 .
  • Wählen Sie das Modul aus und klicken Sie auf Ausführen .

Lösung 2

In diesem Beispiel wird das Worksheet_SelectionChange- Ereignis als Auslöser verwendet.

Dieses Ereignis führt den Code jedes Mal automatisch aus, wenn Sie eine Zelle auswählen (innerhalb eines bestimmten Bereichs).

Der vorgeschlagene Code durchläuft alle Zellen eines ausgewählten Bereichs und fügt ein Kontrollkästchen ein, wenn sich die Zelle in der Schriftart "Wingdings" befindet.

Der Code

So fügen Sie diesen Code ein:
  • Öffnen Sie das Blatt Ihrer Wahl.
  • Klicken Sie mit der rechten Maustaste auf die Blattregisterkarte> Code anzeigen .
  • Kopieren Sie den folgenden Code und fügen Sie ihn ein:

 Option Explicit Private Sub Worksheet_SelectionChange (ByVal-Ziel als Bereich) 'Restriction de la plage. Gießen Sie das erste Mal ein Apostroph und geben Sie es ab, wenn Intersect (Union ([A2: A10], [D2: D10], Target)) Nothing (Ziel) ist. Verlassen Sie Sub 'plage A2: A10; D2: D10 If Target. Count = 1 oder Target.MergeCells Then If Target.Font.Name = "Wingdings" Then With Target'Cellule "liée" .Value = Abs (.Range ("A1"). Value - 1) .NumberFormat = "" "þ ""; Allgemein; "" o "; @" Application.EnableEvents = False .Range ("A1"). Offset (, 1). Wählen Sie Application.EnableEvents = True End With End If End If End Sub 

So verwenden Sie diesen Code:

  • Wählen Sie den Zellbereich.
  • Wenden Sie die Schriftart Wingdings an.
  • Klicken Sie auf eine beliebige Stelle in Ihrem Arbeitsblatt und dann auf jede der zuvor ausgewählten Zellen.

Verwenden des Codes mit einer geschützten Arbeitsmappe / einem geschützten Arbeitsblatt

 ActiveSheet.Protect "admin" 'admin = Votre Mot de Passe' Gib deinen Code hier ein ActiveSheet.Unprotect "admin" 

Wenn Ihr Blatt geschützt ist, müssen Sie den Schutz des Codes aufheben. Dies kann mit dem folgenden Code erreicht werden:

Vorherige Artikel Nächster Artikel

Top-Tipps