Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Checkboxen dynamisch ansprechen
#1
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
Antwortento top
#2
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
[-] Folgende(r) 1 Benutzer sagt Danke an Fennek für diesen Beitrag:
  • tmessers
Antwortento top
#3
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.
[-] Folgende(r) 1 Benutzer sagt Danke an Elex für diesen Beitrag:
  • tmessers
Antwortento top
#4
@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?
Antwortento top
#5
Hi

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

Gruß Elex
Antwortento top
#6
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
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste