Clever-Excel-Forum

Normale Version: Checkboxen dynamisch ansprechen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe VBA-Gemeinde,

ich habe eine Frage zu einer Problemstellung, mit der ich versuche
meinen bereits lauffähigen Code zu optimieren.

Ich habe eine Userform. In dieser befinden sich derzeit 18 Checkboxen.
Nach Aufruf der UF wähle ich einzelne Checkboxen aus. Die Captions der
Checkboxen entsprechen E-Mail-Adressen.
Bisher prüfe ich jede Checkbox einzeln mit folgendem Code, erzeuge dadurch eine Zeichenkette
aus E-Mail-Adressen und verarbeite diese weiter.

Code:
with empfaenger
    If .anCheckBox1 = True Then
        anempf1 = CStr(.anCheckBox1.Caption & ";")
        Else: anempf1 = ""
    End If

    If .anCheckBox2 = True Then
        anempf2 = CStr(.anCheckBox2.Caption & ";")
        Else: anempf2 = ""
    End If

    If .anCheckBox3 = True Then
        anempf3 = CStr(.anCheckBox3.Caption & ";")
        Else: anempf3 = ""
    End If
       
    If .anCheckBox4 = True Then
        anempf4 = CStr(.anCheckBox4.Caption & ";")
        Else: anempf4 = ""
    End If

    ...

End With

an = anempf1 & anempf2 & anempf 3 & anempf 4 ......

Ich bin mir sicher, es gibt eine elegantere Möglichkeit. Wäre das einlesen der Captions in ein Array eine Möglichkeit.

Ich bin für Eure Ratschläge sehr dankbar.


Gruß

tmessers
Hallo,

wie wäre es mit einer "ListBox"? Da kann jeder Eintrag automatisch mit einer CheckBox versehen werden, die Abfrage ist dann relativ einfach.

mfg
Hi

Hier Beispiele wie du in einer Schleife bestimmte Controls abfragen kannst.
http://www.office-loesung.de/ftopic409937_0_0_asc.php

Ich würde eine Listbox mit den Mails anzeigen. (Listbox mit Mehrfachauswahl)

Gruß Elex

PS: Bei Fragen einfach wieder melden.
@Elex und Fennek:
Danke für Eure Antworten. Eine Listbox ist gar keine schlechte Idee.
Die Daten, die in der Listbox enthalten sein sollen füge ich mit

Code:
ListBox.AddItem Item:="Text1"
ListBox.AddItem Item:="Text2"
...
ein, richtig?
Hi

Schau hier mal vorbei.
http://www.snb-vba.eu/VBA_Fill_combobox_listbox_en.html

Gruß Elex
Danke Euch allen für Eure Antworten.

Ich habe folgenden Code erstellt:

Code:
With empfaenger      
    'Bestimmung der Empfänger An:
       anempf = ""
      For Each ctrl In .Controls("Frame1").Controls
           If TypeName(ctrl) = "CheckBox" Then
               If ctrl.Value = True Then
                   anempf = anempf & ctrl.Caption & "; "
               End If
           End If
       Next ctrl
   
       If .anTextBox1 <> "" Then
           anempf = anempf & .anTextBox1.Value & ";"
       End If
   
       MsgBox ("An: " & anempf) 'KONTROLLE
       
       'Bestimmung der Empfänger Cc:
        ccempf = ""
        For Each ctrl In .Controls("Frame2").Controls
            If TypeName(ctrl) = "CheckBox" Then
                If ctrl.Value = True Then
                    ccempf = ccempf & ctrl.Caption & "; "
                End If
            End If
        Next ctrl
   
        If .ccTextBox1 <> "" Then
            ccempf = ccempf & .ccTextBox1.Value & ";"
        End If
   
        MsgBox ("Cc: " & ccempf) 'KONTROLLE

    End With

Gruß

tmessers