Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Checkbox automatisch per VBA erstellen

Forumthread: Checkbox automatisch per VBA erstellen

Checkbox automatisch per VBA erstellen
15.05.2003 12:20:14
Christian Minninger
Hallo zusammen,

ich möchte in einem Tabellenblatt automatisch per VBA Checkboxes erstellen lassen.
Ist z.B. die Zelle (Zeile1,Spalte1) gefüllt, so soll das VBA in der Zelle rechts daneben
(also (Zeile1, Spalte2)) eine Checkbox erstellen.

Ich habs versucht mit sowas wie
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=410.625, Top:=(134.0625), Width:=10.3125, _
Height:=10.3125).Select
das ich aus dem Makro-Rekorder geklaut habe (die Position der Checkboxes ist zunächst noch
zweitrangig; Hauptsache, sie werden überhaupt mal automatisch erstellt).
Beim Ausführen krieg ich jedoch die Fehlermeldung "Die Add-Eigenschaft des OLEObjects-Objektes
kann nicht zugeordnet werden".

Vielleicht weiß jemand Rat, vielen Dank schon mal an alle,
Christian

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Checkbox automatisch per VBA erstellen
15.05.2003 13:26:53
L.Vira
Geht auch noch anders, aber das sollte reichen:
Option Explicit
Sub CheckBoxes()
Const T As Double = 12
Dim Cleft As Double, CTop As Double, CWidth As Double, CHeight As Double
Dim LZeile As Long, i As Long
Cleft = 80
CTop = T
CWidth = 75
CHeight = 15.75
For i = 1 To 20
ActiveSheet.CheckBoxes.Add(Cleft, CTop, CWidth, CHeight).Select
With Selection
.Value = xlOff
.Caption = "Rabdudai " & i
.Display3DShading = True
End With
CTop = CTop + 26.7
If i Mod 10 = 0 Then
Cleft = Cleft + 100
CTop = T
End If
Next i
[a1].Select
End Sub
Anzeige
Re: Checkbox automatisch per VBA erstellen
15.05.2003 13:41:12
Christian Minninger
Vielen Dank für die Hilfe, klappt wunderbar!!!
Re: Checkbox automatisch per VBA erstellen
15.05.2003 13:41:18
Christian Minninger
Vielen Dank für die Hilfe, klappt wunderbar!!!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Checkbox automatisch per VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine Excel Checkbox automatisch per VBA zu erstellen, befolge diese Schritte:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne ein bestehendes.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Klicke im Menü auf Einfügen > Modul, um ein neues Modul zu erstellen.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub CheckBoxes()
       Const T As Double = 12
       Dim Cleft As Double, CTop As Double, CWidth As Double, CHeight As Double
       Dim i As Long
    
       Cleft = 80
       CTop = T
       CWidth = 75
       CHeight = 15.75
    
       For i = 1 To 20
           ActiveSheet.CheckBoxes.Add(Cleft, CTop, CWidth, CHeight).Select
           With Selection
               .Value = xlOff
               .Caption = "Checkbox " & i
               .Display3DShading = True
           End With
           CTop = CTop + 26.7
           If i Mod 10 = 0 Then
               Cleft = Cleft + 100
               CTop = T
           End If
       Next i
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Drücke ALT + F8, wähle CheckBoxes aus und klicke auf Ausführen.

Jetzt solltest Du 20 Excel Checkboxen automatisch in Deinem Arbeitsblatt haben.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Die Add-Eigenschaft des OLEObjects-Objektes kann nicht zugeordnet werden."

    • Dies kann passieren, wenn die VBA-Umgebung nicht richtig konfiguriert ist. Überprüfe, ob Du die richtige Syntax verwendest. Statt ActiveSheet.OLEObjects.Add solltest Du ActiveSheet.CheckBoxes.Add verwenden.
  • Checkboxen erscheinen nicht an der gewünschten Position.

    • Achte darauf, dass die Werte für Cleft und CTop korrekt gesetzt sind. Diese Werte bestimmen die Position der Checkboxen.

Alternative Methoden

Neben der Verwendung von ActiveSheet.CheckBoxes.Add gibt es alternative Methoden, um eine VBA Checkbox einzufügen:

  1. OLEObjects verwenden:

    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
                               DisplayAsIcon:=False, Left:=100, Top:=100, _
                               Width:=75, Height:=15).Select
  2. Formularsteuerelemente: Du kannst auch Formularsteuerelemente verwenden, um Checkboxen hinzuzufügen, was in manchen Fällen nützlich sein kann.


Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie Du Checkboxen basierend auf Zellinhalten erstellen kannst:

Sub CheckBoxBasedOnCell()
    Dim cell As Range
    Dim checkbox As CheckBox

    For Each cell In ActiveSheet.Range("A1:A10")
        If cell.Value <> "" Then
            Set checkbox = ActiveSheet.CheckBoxes.Add(cell.Offset(0, 1).Left, cell.Top, 15, 15)
            With checkbox
                .Caption = "Checkbox " & cell.Row
                .Value = xlOff
            End With
        End If
    Next cell
End Sub

Dieses Skript erstellt eine Checkbox in der Zelle rechts von jeder gefüllten Zelle in Spalte A.


Tipps für Profis

  • Nutze With...End With-Blöcke, um den Code effizienter und lesbarer zu gestalten.
  • Experimentiere mit den Eigenschaften der Checkboxen, wie Font, Color und Size, um das Design anzupassen.
  • Teste den Code in einer neuen Arbeitsmappe, um mögliche Konflikte mit bestehenden Daten zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die Checkboxen nachträglich bearbeiten? Um eine Checkbox zu bearbeiten, klicke mit der rechten Maustaste auf die Checkbox und wähle Format Control, um die Eigenschaften anzupassen.

2. Kann ich die Checkboxen auch in anderen Excel-Versionen verwenden? Ja, die oben genannten VBA-Codes sind mit den meisten modernen Excel-Versionen (2010 und höher) kompatibel.

3. Wie kann ich alle Checkboxen auf einmal löschen? Verwende den folgenden VBA-Code, um alle Checkboxen im aktiven Arbeitsblatt zu löschen:

Sub DeleteAllCheckBoxes()
    Dim cb As CheckBox
    For Each cb In ActiveSheet.CheckBoxes
        cb.Delete
    Next cb
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige