[Excel] Herausfinden in welcher Spalte sich Checkboxen befinden?

hauke1981

Erfahrenes Mitglied
Hi,
wie kann ich herausfinden in welcher Spalte sich Checkboxen befinden? Ich hab in meinem Excelsheet mehrere Checkboxen. Einmal in Spalte A und dann noch in Zeile 2 ab Spalte J bis S.
Nun möchte ich die Checkboxen die sich in Spalte A befinden über ein Makro ein und ausblenden lassen können. Das funktioniert auch schon soweit aber jetzt kommt das Makro mit den anderen Checkboxen ab Spalte J nicht klar. Diese sollen nicht über das Makro angesprochen werden. Weiss einer wie ich das machen kann?
Bis jetzt zähle ich die einzelnen OLEObjects im Tabellenblatt und prüfe ob sie die ProgID "Forms.Combobox.1" haben. Da werden aber alle gezählt. Ich will aber nur die in Spalte A zählen....

Grüße
 
Jedes Objekt hat einen eigenen und einmaligen Namen. Und über diesen Namen kannst du die Checkboxen (wie auch jedes ander Objekt) in VBA ansprechen.

Den Namen bekommst du entweder über die Eigenschaften heraus (AxtiveX) oder wenn du dem Steuerelement ein Makro zuweist, dann ist der erste Teil des Makronamens vor dem "_" auch der Name des Steuerelements.
 
Ok,
ich hab aber das Problem das die Checkboxen die sich in Spalte A befinden ändern können. Es können welche hinzukommen oder wegfallen. Das läuft bei mir dann folgendermaßen ab. Ich lösche erst alle Checkboxen und füge dann neue ein. Dabei ändert sich dann doch der Name der Checkboxen oder? Es sollen ja auch nicht alle gelöscht werden. Wie gesagt nur die in Spalte A. Kann ich den Boxen auch nen bestimmten Namen beim Erstellen mitgeben?
 
Hi,

wenn das neu eingefügte Grafikobjekt noch markiert ist:
Code:
    Selection.Name = "Wunschname"



Zum Löschen ja diesen Befehl:
Code:
    ActiveSheet.Shapes("Wunschname").Delete

Und damit beim versuch des löschens eines nicht existierenden nicht derCode abbricht, vorher
Code:
  On Error Resume Next 'Fehler übergehen
einfügen



Gruss DD
 
[..] Kann ich den Boxen auch nen bestimmten Namen beim Erstellen mitgeben?
Ja, klar. Aber schreibe uns doch einmal, welche Excel-Version du verwendest und wie du die Checkboxen einfügst.

Ich schreibe einmal, wie ich es in Excel 2k3 machen würde:
  • Über Ansicht>Symbolleisten>Steuerelement-Toolbox sichtbar machen
  • Checkbox anklicken und dann in der Tabelle an der Zielposition klicken, evtl. noch die Position nachjustieren
  • Mit der rechten Maustaste auf die Checkbox klicken und "Eigenschaften" wählen
  • In der ersten Zeile de Eigenschaften-Fensters steht der Name des Objekts, den du entsprechend (nach Wunsch) ändern kannst.
  • Bei "Caption" findest du die Beschriftung.

Es geht aber auch anders, mit und/oder ohne Restrisiko.
Code:
Sub ChkBox_markieren()
    ' In Spalte A sind die Checkboxen mit dem Namen "A_CheckBox1"
    ' und entsprechend fortlaufender Nummerierung versehen
    
    Dim ShapeName As String
    Dim Shp As Shape
    Dim SpalteB As Integer
    
    SpalteB = ActiveSheet.Columns("B").Left
    For Each Shp In ActiveSheet.Shapes
        'Möglichkeit 1 (sicher)
        ShapeName = LCase(Shp.Name)
        If Left(UCase(ShapeName), 10) = "a_checkbox" Then
            Shp.Delete
        End If
        
        'Es geht aber auch so, allerdings mit Rest-Risiko:
        'Kommentierung bei Bedarf entfernen und obigen Code auskommentieren / löschen
        If Shp.Left < SpalteB Then
            If Shp.Type = 12 Then Shp.Delete
        End If
    Next
End Sub
Die 2. Variante ist dann gut, wenn in Spalte A keine weiteren Shapes drinnen sind. Da brauchst du natürlich keine Namen zu verändern, logo.
 
Zurück