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

Code verkürzen?

Code verkürzen?
30.10.2003 12:58:12
Richter
Hallo an alle Helfer,

ich möchte auf einer Form folgendes überprüfen, ob Checkboxen angeklickt wurden sind. Wenn keine einzige angeklickt wurden ist soll eine Fehlermeldung ausgegeben werden. Habe mir schon was zusammengeschrieben das auch funktioniert.
Aber geht des ned auch kürzer? Zum Beispiel das man irgendwie schreiben könnte von Checkbox1 bis Checkbox sowieso!!

Vielen Dank im voraus, gruß Daniel

If menu.CheckBox1.Value = False And _
menu.CheckBox2.Value = False And _
menu.CheckBox3.Value = False And _
menu.CheckBox4.Value = False And _
menu.CheckBox5.Value = False And _
menu.CheckBox6.Value = False And _
menu.CheckBox7.Value = False And _
menu.CheckBox8.Value = False And _
menu.CheckBox9.Value = False And _
menu.CheckBox10.Value = False And _
menu.CheckBox11.Value = False And _
menu.CheckBox12.Value = False And _
menu.CheckBox13.Value = False And _
menu.CheckBox14.Value = False And _
menu.CheckBox15.Value = False And _
menu.CheckBox16.Value = False And _
menu.CheckBox17.Value = False And _
menu.CheckBox18.Value = False Then .....

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

Betreff
Datum
Anwender
Anzeige
AW: Code verkürzen?
30.10.2003 13:01:46
Michaerl Scheffler
Hi,

kürzer geht es schin mit:
Not(menu.CheckBox1) And _
Not(menu.CheckBox2) And _

usw. usf.

Gruß

Micha
AW: Code verkürzen?
30.10.2003 13:09:07
xXx
Hallo,
mit einer Schleife testen:

bolChkBx=false
for i=1 To 18
if menu.controls("Checkbox" &i)=true Then
bolChkBx=true
exit for
Next i
if bolChkBx=false Then...

Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen der Frager an die Antworter!
Bitte um erklärung!
30.10.2003 13:32:31
Richter
Hi Udo,

deine Lösung gefällt mir bis jetzt am Besten!! Aber leider versteh ich die Schleife nicht so recht! Könntest du sie mir bitte erklären was was ist? Ist z.B bolChkBx eine Variable? Boolsche?
Am besten wäre es wenn du den gesamten Quelltext mir zeigen könntest weil ich auch nicht so recht weis was am Schluss nach dem ... noch kommmen könnte.

Trotzdem vielen Dank
Anzeige
AW: Bitte um erklärung!
30.10.2003 14:10:55
xXx
Hallo,
bolChkBx ist eine Boolean-Variable, wie du richtig vermutet hast. Diese wird auf True gesetzt, sobald eine deiner Checkboxen angeklickt ist. Danach wird die Schleife verlassen. Ansonsten wird weitergeprüft, bis alle Checkboxen getestet sind.

Sub Test_Checkboxen()
Dim BolChkBx as Boolean, i as Byte
bolChkBx=false
For i=1 To 18
If menue.controls("Checkbox" &i)=True Then
bolChkBx=True
Exit For
Next i
If bolChkBx=False Then
MsgBox("Mindestens eine Auswahl treffen.")
End If
End Sub

Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen der Frager an die Antworter!
Anzeige
AW: Bitte um erklärung!
30.10.2003 14:58:30
Michael Scheffler
Hi,

die Schleife ist am langsamten. Wenn Du nicht gerade dynamisch erstellte Controls hast, solltest Du es entweder so machen wie Du oder aber kürzer wie ich.

Die Klasse von Thomas lohnt sich nur für viele Boxen.

Gruß

Micha
AW: Bitte um erklärung!
30.10.2003 15:51:15
Thomas Risi
Hi

>Die Klasse von Thomas lohnt sich nur für viele Boxen.

Das ist keine Klasse. Es ist einfach so, daß beim Initialisieren der UserForm alle 'CheckBox'-Objekte in die Collection geschrieben werden.

Vorteile ...

- Indizierung wird möglich, z.B. CheckBoxes(3).Value

- Es werden alle 'CheckBox'-Objekte unabhängig vom Namen erfasst, also auch solche deren Name nicht 'CheckBox & i' ist, sondern 'JackBox' ...

- Bei jedem Öffnen der UF werden also die 'CheckBox'-Objekte eingelesen, und zwar alle. Es muß also keine Rücksicht auf die Anzahl genommen werden, und der Code muß nicht angepasst werden wenn sich die Anzahl der Objekte auf UF ändert.

Gruß
Thomas

Risi Thomas Softwareentwicklung

Anzeige
AW: Bitte um erklärung!
30.10.2003 17:08:59
Michael Scheffler
Hallo Thomas,

Du hast recht - ich hatte nicht richtig hingeschaut. Es ist keine Klasse.

Gruß

Micha
AW: Code verkürzen?
30.10.2003 13:13:24
Thomas Risi
Hallo Daniel

Oder so ...


Option Explicit

Dim CheckBoxes As New Collection

Private Sub CommandButton1_Click()
    StatusTesten
End Sub

Private Sub UserForm_Initialize()
    CBCollection
End Sub

Private Sub CBCollection()

    Dim As Object
    
    For Each In Me.Controls
        If TypeOf Is MSForms.CheckBox Then
            CheckBoxes.Add i
        End If
    Next i
    
End Sub

Private Sub StatusTesten()

    Dim As MSForms.CheckBox
    
    For Each In CheckBoxes
        If Then MsgBox "TRUE"
    Next i
    
End Sub


     Code eingefügt mit Syntaxhighlighter 2.5


Gruß
Thomas

Risi Thomas Softwareentwicklung

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige