Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
796to800
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
796to800
796to800
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Checkboxen in Sheet über Schleife

Checkboxen in Sheet über Schleife
06.09.2006 12:08:10
Andy
Hallo Leute!
Ich hoffe Ihr könnt mir wieder helfen!
Im Arciv bin ich leider nicht fündig geworden.
folgendes:
Ich habe in einem Sheet 90 checkboxen und möchte aber nur die Nummern 15-90
über eine Schleife laufen lassen (damit ich nicht den ganzen Kram 75 mal abtippen muss und der code übersichtlich bleibt).
Und zwar möchte ich abfragebn:
wenn CB15 = aktiviert, dann schreibe in Zelle N25 "Ja", sonst "Nein"
dann die nächste CB und das dann in Zelle N26 und so weiter.
Versucht habe ich das schon über eine For-Next schleife. Aber trotz der unendlichen Versuche hat es nicht funktioniert.
Könnt Ihr mir helfen??
Danke schonmal!

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Checkboxen in Sheet über Schleife
06.09.2006 12:38:19
IngGi
Hallo Andy,
versuch's mal so:
Dim cb As Control
For Each cb In UserForm1.Controls 'Name der UserForm anpassen
If Left(cb.Name, 2) = "CB" Then
If cb = True Then
'Nachfolgendes Range bezieht sich auf das aktive Blatt
'Daher evtl. über Tabellenblattnamen referenzieren
Cells(CInt(Right(cb.Name, Len(cb.Name) - 2)) + 10, 14) = "ja"
Else
'Nachfolgendes Range bezieht sich auf das aktive Blatt
'Daher evtl. über Tabellenblattnamen referenzieren
Cells(CInt(Right(cb.Name, Len(cb.Name) - 2)) + 10, 14) = "nein"
End If
End If
Next 'cb
Gruß Ingolf
hab was vergessen...
06.09.2006 13:11:41
IngGi
Hallo Andy,
die ersten 15 Checkboxen willst du ja auch nicht mit drin haben.
Dim cb As Control
For Each cb In UserForm1.Controls 'Name der UserForm anpassen
If Left(cb.Name, 2) = "CB" Then
If CInt(Right(cb.Name, Len(cb.Name) - 2)) > 14 Then
If cb = True Then
'Nachfolgendes Range bezieht sich auf das aktive Blatt
'Daher evtl. über Tabellenblattnamen referenzieren
Cells(CInt(Right(cb.Name, Len(cb.Name) - 2)) + 10, 14) = "ja"
Else
'Nachfolgendes Range bezieht sich auf das aktive Blatt
'Daher evtl. über Tabellenblattnamen referenzieren
Cells(CInt(Right(cb.Name, Len(cb.Name) - 2)) + 10, 14) = "nein"
End If
End If
End If
Next 'cb
Gruß Ingolf
Anzeige
AW: hmm aber ich hab ja keine Userform
06.09.2006 13:32:48
Andy
Hallo Ingolf!
Danke erstmal für deine Antwort!
Solche ähnlichen Schleifen für eine Userform habe ich gefunden, aber die CB's sind in einem ganz normalen Tabellenblatt drin.
Und da nölt er schon rum wenn er was aus ".controls" machen soll.
Auch z.B. bei Me.controls.
Also ich brauch ne Schleife für CB's in einem Tabellenblatt. fällt dir da auch was zu ein?? (*hoff*)
Liebe Grüße
Andy
AW: hmm aber ich hab ja keine Userform
06.09.2006 13:40:04
P@ulchen
Hallo Andy,
probier mal so (Code in das Tabellenblatt-Modul):

Option Explicit
Sub Prüfen()
Dim chb As OLEObject
Dim xZahl As Integer
For Each chb In ActiveSheet.OLEObjects
    If TypeName(chb.Object) = "CheckBox" Then
        xZahl = Right(chb.Name, Len(chb.Name) - 8)
        ' oder xZahl = Right(chb.Name, Len(chb.Name) - 2), falls die Checkboxen "CB.." heißen
        If chb.Object.Value = True And 14 < xZahl And xZahl < 100 Then
            Cells(xZahl + 10, 14).Value = "ja"
        Else
            Cells(xZahl + 10, 14).Value = "nein"
        End If
    End If
Next
End Sub

Code eingefügt mit Syntaxhighlighter 4.0


Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de
Anzeige
AW: Ja, fast :-)
06.09.2006 14:04:47
Andy
Hallo P@aulchen..
Super.. da wär ich nicht drauf gekommen!
Ich musste den Code noch etwas anpassen, da er auch bei den CB unter 15 ein Nein geschrieben hat. Hab das einfach nur in die Else Anweisung mit reingenommen..

Sub Prüfen2()
Dim chb As OLEObject
Dim xZahl As Integer
For Each chb In ActiveSheet.OLEObjects
If TypeName(chb.Object) = "CheckBox" Then
xZahl = Right(chb.Name, Len(chb.Name) - 8)
If chb.Object.Value = True And xZahl > 14 And xZahl < 100 Then
Cells(xZahl + 10, 14).Value = "ja"
Else
If chb.Object.Value = False And xZahl > 14 And xZahl < 100 Then
Cells(xZahl + 10, 14).Value = "nein"
End If
End If
End If
Next
End Sub

Herzlichen Dank!!
Andy
Anzeige
AW: Ja, fast :-)
06.09.2006 14:15:53
P@ulchen
Hallo Andy,
stimmt, aber mach es trotzdem nicht so kompliziert:

Sub Prüfen()
Dim chb As OLEObject
Dim xZahl As Integer
For Each chb In ActiveSheet.OLEObjects
    If TypeName(chb.Object) = "CheckBox" Then
        xZahl = Right(chb.Name, Len(chb.Name) - 8)
        If xZahl > 14 Then
            If chb.Object.Value = True Then
                Cells(xZahl + 10, 14).Value = "ja"
            Else
                Cells(xZahl + 10, 14).Value = "nein"
            End If
        Else
    End If
Next
End Sub

Code eingefügt mit Syntaxhighlighter 4.0


Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de
Anzeige
AW: Super!
06.09.2006 14:20:43
Andy
Ja, stimmt! Viel eleganter!! :-)
Danke!
Danke für die Rückmeldung! owT
06.09.2006 14:24:59
P@ulchen

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige