Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1052to1056
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gruppierte CheckBoxen deaktivieren

Gruppierte CheckBoxen deaktivieren
19.02.2009 11:10:00
Haegarle
Hallo zusammen,
ich habe eine Tabelle erstellt, in der einige Checkboxen in einer Gruppe zusammengefasst sind. Diese Checkboxen möchte ich zurücksetzen, kann jedoch nicht mit
CheckBox1.Value = False
usw. arbeiten. Bei der Suche hier und im Web habe ich mehrfach gelesen, dass Durch die Gruppierung eine andere "Ansprache" der Checkboxen stattfinden muss (über OLEObjects), das klappte allerdings auch nicht. Seltsamerweise konnte ich in der ursprünglichen Datei (Tabelle wurde kopiert) die CheckBoxes wie oben beschrieben ansprechen.
Sorry für die doofe Frage, aber ich bin noch Neuling in VBA und finde hier kein Ansatz für erfolgreiches suchen...
Danke für Eure Hilfe im Voraus!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gruppierte CheckBoxen deaktivieren
19.02.2009 11:30:00
Renee
Hi Haegarle,
So mal als doofe Antwort (bin Checkbox-Neuling ;-)) :

Sub GruppeÄndern()
Call grpCbx("Gruppe1", False)
End Sub
Sub grpCbx(tGrpName As String, Optional bState As Boolean = False)
Dim ctrl As Object
For Each ctrl In ActiveSheet.OLEObjects
If ctrl.OLEType = 2 Then
If ctrl.Object.GroupName = tGrpName Then ctrl.Object.Value = bState
End If
Next ctrl
End Sub


Im Beispiel sind es Checkboxen aus der Steuerelemente-Toolbox die einen .GroupName Gruppe1 haben. Im Call-Parameter also den Gruppennamen richtig setzen.
GreetZ Renée

Anzeige
AW: Gruppierte CheckBoxen deaktivieren
19.02.2009 12:32:00
Haegarle
Vielen Dank Renée,
leider funktioniert das nicht bei mir. Der Code läuft sauber durch, die Checkboxes werden allerdings nicht deaktiviert. Ich habe den Code wie folgt umgestellt und angepasst:

Private Sub loeschPro()
Dim ws1 As Worksheet
Dim ctrl As Object
Set ws1 = Sheets("Protokoll")
tGrpName = "Tabelle1"
bState = False
ws1.Activate
''Kopfdaten zurücksetzen
ws1.Cells(1, 8).Value = ""
ws1.Cells(2, 6).Value = ""
ws1.Cells(3, 6).Value = ""
ws1.Cells(3, 12).Value = ""
''Checkboxen deaktivieren
For Each ctrl In ws1.OLEObjects
If ctrl.OLEType = 2 Then
If ctrl.Object.GroupName = tGrpName Then ctrl.Object.Value = bState
End If
Next ctrl
''Seriennummern-Eintrag zurücksetzen
For x = 23 To 41
ws1.Cells(x, 21).Value = ""
Next x
End Sub


Wenn ich mir das Schrittweise im Debugger anschaue, dann findet er keine OLEObjetcts!
In den Eigenschaften wird für CheckBox6 allerdings der GroupName "Tabelle1" angezeigt. In Excel selbst wird das ganze "Gruppe 1" genannt (habe ich allerdings auch schon ausprobiert) und in der Eingabezeile von Excel steht "=EINBETTEN("Forms.CheckBox.1";"")"
Stehe momentan gerade hart auf'm Schlauch...
Danke schon mal im Voraus...
lg
Haegarle

Anzeige
Wirklich gruppiert ?
19.02.2009 13:26:00
Renee
Hi Haegerle,
Aus deinen Angaben und v.a. aus Zitat: "In Excel selbst wird das ganze "Gruppe 1" genannt (habe ich allerdings auch schon ausprobiert) ..." entnehme ich, dass du die Checkboxen nicht über deren .GroupName Eigenschaft zusammengefasst hast, sondern über eine Gruppenzusammenfassung der Zeichnungsobjekte. Das sind aber 2 komplett verschiedene paar Stiefel und haben gar nix miteinander zu tun. Selektier die zusammengehörenden und schau die die .GroupName im Eigenschaftsfenster der Steuerelement-Toolbox an.
Das keine OLEObjects gefunden werden kann ich nicht verstehen. War den deine jetzige Tabelle "Protokoll" mal die "Tabelle1" (beim erstellen der Checkboxes) ?
GreetZ Renée
Anzeige
AW: Wirklich gruppiert ?
19.02.2009 14:20:00
Haegarle
Hallo Renée,
ich habe die Checkboxes nochmal angeschaut und bei GroupName war hier "Tabelle1" eingetragen.
Die Zeichnungsobjekte wurden bei der Erstellung gruppiert, nicht die Checkboxes selbst (wußte nicht dass das einen Unterschied macht, sorry).
Ich habe nochmal die Gruppierung aufgehoben, die Checkboxes dann im Eigenschaftenfenster gruppiert um dann zu sehen, ob das Script so durchläuft. Leider bekomme ich dann Fehler 438 (Objekt unterstützt Methode oder Eigenschaft nicht".
Wenn ich dann wieder die Checkboxes und ein Label zusammen gruppiere, erkennt VBA keine OLEObjects mehr...
Durch das neue Gruppieren der Checkboxes kann ich nun allerdings wieder direkt auf die Kameraden zugreifen z.B. mit CheckBox1.value=false.
Hab' hier den Sachverhalt noch nicht so ganz durchblickt. Hast Du oder jemand anderes eine Idee, wo ich da anfangen sollte mit dem Nachlesen und Nachvollziehen?
Danke schon mal... bin jetzt ein Stück weiter... :)
Anzeige
AW: Wirklich gruppiert ?
19.02.2009 14:33:00
Renee
Hi Haegerle,
Ok, das war ein Fehler von mir, weil nämlich der OLEType gar nicht das aussagt, was ich im Kopf hatte. Manchmal mischt sich dort Falsches zu Richtigem ;-)
Versuchs lieber mal so:

Sub grpCbx(tGrpName As String, Optional bState As Boolean = False)
Dim ctrl As Object
For Each ctrl In ActiveSheet.OLEObjects
If Left(ctrl.Name, 8) = "CheckBox" Then
If ctrl.Object.GroupName = tGrpName Then ctrl.Object.Value = bState
End If
Next ctrl
End Sub


Lass aber lieber die Finger vom Gruppieren über das Zeichnungstool!
GreetZ Renée

Anzeige
AW: Wirklich gruppiert ?
19.02.2009 14:47:00
Haegarle
Vielen Dank Renée!
Das funktioniert bestens :-)
Ich hatte die Checkboxes noch gruppiert vom Ausrichten her... Wenn ich die Gruppierung wieder herstelle, kann ich nicht mehr darauf zugreifen, weiß der Geier warum....
Nochmals Danke für Deine Mühe!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige