Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1584to1588
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

Aktionen für mehrere Checkboxen ausführen

Aktionen für mehrere Checkboxen ausführen
05.10.2017 22:29:54
EasyD
Hallo zusammen
ich probiere viel aus, lerne immer weiter dazu, aber Probleme bleiben natürlich trotzdem immer mal. Ich habe aber auch gelernt, dieses Forum ist für mich die Schatztruhe des unergründlichen Wissens...
Wie folgt:
Ich habe an die 100 ActiveX-Checkboxen in meinem Blatt. Jeder Checkbox soll bei TRUE eine eigene Aktion zugewiesen werden. Es soll, abhängig von der Checkboxnummer, also die 5 für "Checkbox5" eine Zeile auf einem anderen Blatt ausgeblendet werden und der Haken wieder entfernt werden. Unten stehenden Code habe ich bereits zusammen gegoogelt:
2 Fragen dazu
1.
Warum werden mir bei dieser Nummer auch Togglebuttons auf dem Blatt wieder auf False gesetzt? Ich frage doch extra den Typ der Control ab.
2.
Geht das überhaupt, dass ich aus der Bezeichnung die letzten maximal 3 Stellen auslese und zum weiter rechnen verwende? Ich habe insgesamt ca 100 Checkboxen. Die Nummern der Boxen gehen nicht durch von 1 bis 100, aber die höchste Nummer ist 264. Die Anzahl der auszulesenden Stellen ist halt variabel.
Public Sub Ckecks()
Dim ObjOLE  As OLEObject
For Each ObjOLE In ActiveSheet.OLEObjects
If TypeOf ObjOLE.Object Is MSForms.CheckBox Then
ObjOLE.Name
'Sheets("Ertrag").Rows("Checkboxnummer + 8").Hidden
ObjOLE.Object.Value = False
End If
Next ObjOLE
End Sub

Danke euch!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktionen für mehrere Checkboxen ausführen
05.10.2017 23:52:47
EasyD
Ach was hab ich mir denn da für ne Grütze zusammen kopiert
hier der Code nochmal:
Public Sub Ckecks()
'Die Checkboxen
Dim ObjOLE  As OLEObject
For Each ObjOLE In ActiveSheet.OLEObjects
If TypeOf ObjOLE.Object Is MSForms.CheckBox Then
If ObjOLE.Value = True Then
'Sheets("Ertrag").Rows("Checkboxnummer + 8").Hidden = True
ObjOLE.Object.Value = False
Else
End If
Next ObjOLE
End Sub

AW: Aktionen für mehrere Checkboxen ausführen
06.10.2017 08:48:05
Nepumuk
Hallo,
versuch es mal so:
Public Sub Ckecks()
    'Die Checkboxen
    Dim ObjOLE As OLEObject
    
    For Each ObjOLE In ActiveSheet.OLEObjects
        If TypeOf ObjOLE.Object Is MSForms.CheckBox Then
            If ObjOLE.Object.Value Then
                Worksheets("Ertrag").Rows(Val(Mid(ObjOLE.Name, 9)) + 8).Hidden = True
                ObjOLE.Object.Value = False
            End If
        End If
    Next ObjOLE
End Sub

Gruß
Nepumuk
Anzeige
AW: Aktionen für mehrere Checkboxen ausführen
06.10.2017 16:28:36
EasyD
Jawoll!
Danke!
Zu deiner Lösung die Frage noch:
Das mit Val der Zahlenwert ermittelt wird, verstehe ich ja noch
Was aber bedeutet dann Mid in diesem Zusammenhang. Offensichtlich ermittelst du 9 Stellen des Namens "Checkbox" und kürzt diese Stellen raus. richtig? Ich hatte von hinten rum gedacht und wollte die Zahlenwerte auslesen. So geht's natürlich auch.
AW: Aktionen für mehrere Checkboxen ausführen
06.10.2017 16:34:14
Nepumuk
Hallo,
wenn ich von hinten anfangen würde wäre es etwas komplizierter. Länge des Namens ermitteln - berechnen wie viele Ziffern es sind - Ziffern ausschneiden - und dann in eine Zahl umwandeln.
Gruß
Nepumuk
Anzeige
AW: Aktionen für mehrere Checkboxen ausführen
06.10.2017 17:37:05
EasyD
Danke
ich brüte manchmal einfach noch an zu komplizierte Lösungen aus....
Grüße
AW: Aktionen für mehrere Checkboxen ausführen
06.10.2017 16:21:25
Mullit
Hallo,
vielleicht noch zu 1), ne gaaanz böse Falle: der TypeOf-Operator fragt auch die zu erbenden Klassen ab und die ToggleButton-Klasse erbt von der CheckBox-Klasse, s.a:
http://www.office-loesung.de/ftopic360227_0_0_asc.php
Das OLEObject-Objekt hat 'ne progID-Eigenschaft, frag die ab, die sollte eindeutig sein...
Gruß, Mullit
AW: Aktionen für mehrere Checkboxen ausführen
06.10.2017 16:32:23
EasyD
Danke für den Hinweis Mullit,
ich hab das Problem anders gelöst und entferne den Haken durch eine andere Prozedur. Ist auch übersichtlicher so.
Trotzdem würde ich gerne verstehen was du vorschlägst. Die Diskussion hinter dem Link von Dir übersteigt meine Fähigkeiten. Wie frage ich die progID-Eigenschaft ab?
Gruß
Easy
Anzeige
AW: Aktionen für mehrere Checkboxen ausführen
06.10.2017 16:48:06
Mullit
Hallo,
uhh ja, hab Nepumuks Code erst jetzt gesehen, natürlich noch besser, da wird das Problem automatisch mit der Val-Funktion gelöst, abfragen für andere Fälle würdest Du die progID-Eigenschaft über die OLE-Bezeichner:
If ObjOLE.progID = "Forms.CheckBox.1" Then
End If

Wenn Du in der Hilfe 'Programmtechnische OLE-Bezeichner' eingibst, findest Du eine Liste dazu:
ActiveX-Steuerelemente
Zum Erstellen der in der folgenden Tabelle aufgeführten ActiveX-Steuerelemente verwenden Sie  _
die dazugehörigen programmtechnischen OLE-Bezeichner.
Zum Erstellen dieses Steuerelements Verwenden Sie diesen Bezeichner
CheckBox Forms.CheckBox.1
ComboBox Forms.ComboBox.1
CommandButton Forms.CommandButton.1
Frame Forms.Frame.1
Image Forms.Image.1
Label Forms.Label.1
ListBox Forms.ListBox.1
MultiPage Forms.MultiPage.1
OptionButton Forms.OptionButton.1
ScrollBar Forms.ScrollBar.1
SpinButton Forms.SpinButton.1
TabStrip Forms.TabStrip.1
TextBox Forms.TextBox.1
ToggleButton Forms.ToggleButton.1 

Gruß, Mullit
Anzeige
AW: Aktionen für mehrere Checkboxen ausführen
06.10.2017 17:37:51
EasyD
Danke,
ist gemerkt!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige