Herbers Excel-Forum - das Archiv

Checkboxen Namen beliebig in eine Zelle schreiben

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Betrifft: Checkboxen Namen beliebig in eine Zelle schreiben
von: Mub

Geschrieben am: 20.09.2019 09:54:58
Hallo zusammen,
ich bräuchte kurz eure Hilfe bei einer UserForm mit Checkboxen. In einem 2ten Reiter möchte ich, dass die Namen der Checkboxen in eine Zelle geschrieben werden, welche ausgewählt wurden. Sobald ich nur 1 Checkbox auswähle wird der Name übernommen. Wie muss ich den Code schreiben, wenn ich mehrere auswähle?
Zum Verständnis habe ich eine Beispieldatei angehängt.
Viel Grüße und danke vorab!
Mub
https://www.herber.de/bbs/user/132127.xlsm

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714048.html

Geschrieben am: 20.09.2019 10:10:52
Hallo,
ich sehe deine bisherigen Codes nicht.
Aber ich habe bei einem normalen Dropdown das Ganze so gelöst (bekommen):
If wertold <> wertnew Then Target.Value = wertold & "; " & wertnew 
Vorher musst du noch wertold bzw. wertnew als String deklarieren.
Vielleicht hilft dir das?
Gruß Pierre

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714049.html

Geschrieben am: 20.09.2019 10:12:14
Hallo Mub,
teste mal:
Option Explicit

Private Sub CheckBox11_Click()
    Call Eintragen
End Sub

Private Sub CheckBox12_Click()
    Call Eintragen
End Sub

Private Sub CheckBox13_Click()
    Call Eintragen
End Sub

Private Sub CheckBox14_Click()
    Call Eintragen
End Sub

Private Sub CheckBox15_Click()
    Call Eintragen
End Sub

Private Sub CommandButton1_Click()
    Unload Me
End Sub

Private Sub Eintragen()
    Dim objControl As Control
    With Worksheets("Sheet2").Cells(2, 3)
        .ClearContents
        For Each objControl In Frame1.Controls
            If TypeName(objControl) = "CheckBox" Then
                If objControl.Value Then _
                    .Value = .Value & objControl.Caption & ", "
            End If
        Next
        If Not IsEmpty(.Value) Then .Value = Left$(.Value, Len(.Value) - 2)
    End With
End Sub

Gruß
Nepumuk

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714110.html

Geschrieben am: 20.09.2019 15:34:04
Hallo Nepumuk,
vielen Dank für deine Hilfe. Es klappt zu 99% :) Das einzige was der Code nicht macht, ist die Reihenfolge der Checkboxen so zu lassen.
Wenn ich Änderung und Entfall anklicke, schreibt er mir in Sheet 2 Entfall, Änderung. Und bei allen schreibt er dies:
"Anpassung, Entfall, Sonstiges, Änderung, Verlängerung" anstatt
"Änderung, Anpassung, Verlängerung, Entfall, Sonstiges" aber würde ich auch so lassen, wenn es zu komplex ist oder ähnliches.
Ich habe eine weiter Frage und stelle sie erstmal hier:
Aus den Daten habe ich 3 PDF Dateien in einen Ordner erstellt. Jetzt möchte ich diese per VBA als Mail versenden und die gesamten Dateien aus dem Ordner mit dem Text "Hier die Dateien..." versenden, aber so, dass ich noch auf senden klicken muss, um die Mail kurz zu überprüfen. Kannst du/ihr mir dabei helfen?
Viele Grüße
Mub

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714161.html

Geschrieben am: 20.09.2019 19:20:47
Hallo Mub,
das mit den Checkboxen geht so:
Private Sub Eintragen()
    Dim lngIndex As Long
    With Worksheets("Sheet2").Cells(2, 3)
        .ClearContents
        For lngIndex = 11 To 15
            If Frame1.Controls("CheckBox" & CStr(lngIndex)).Value Then _
                .Value = .Value & Frame1.Controls("CheckBox" & CStr(lngIndex)).Caption & ", "
        Next
        If Not IsEmpty(.Value) Then .Value = Left$(.Value, Len(.Value) - 2)
    End With
End Sub

Und Mail senden geht so:
Option Explicit

Public Sub Mail_senden()
    
    Const FOLDER_PATH As String = "H:\Test\" 'Anpassen !!!
    
    Dim objOutlook As Object, objMail As Object
    Dim strFilename As String, strAttachment As String
    
    strFilename = Dir$(FOLDER_PATH & "*.pdf")
    Do Until strFilename = vbNullString
        strAttachment = strAttachment & FOLDER_PATH & strFilename & ";"
        strFilename = Dir$
    Loop
    
    Set objOutlook = CreateObject(Class:="Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)
    
    With objMail
        .To = "mailadresse@provider.de" 'Mailadresse anpassen
        .Subject = "Betreff" 'Betreff anpassen
        .Body = "Hallo" & vbLf & vbLf & "Hier die Dateien..." & vbLf & vbLf & "Gruß Mub"
        Call .Attachments.Add(strAttachment)
        Call .Display 'nur anzeigen
        ' Call .Send 'direkt senden
    End With
    
    Set objMail = Nothing
    Set objOutlook = Nothing
    
End Sub

Gruß
Nepumuk

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714050.html
Geschrieben am: 20.09.2019 10:15:17
Hallo
Für Dein Beispiel so (nicht allgemein!)

Private Sub CommandButton1_Click()
Dim ctrl As Control
For Each ctrl In Frame1.Controls
If ctrl Then Debug.Print ctrl.Caption
Next
'Unload Me
End Sub

Ergebnis im Direktfenster anschauen
Gruß Matthias

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714114.html
Geschrieben am: 20.09.2019 15:39:21
Hallo Matthias,
auch dir danke für deinen Code. Bei dir wird leider nichts in den 2ten Reiter geschrieben.
Viele Grüße
Mub

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714135.html

Geschrieben am: 20.09.2019 16:45:08
Hallo
Das hatte ich aber auch dazugeschrieben!
Ergebnis im Direktfenster anschauen
Ich dachte Du bekommst das selber hin einen String in Deine Wunschzielzelle zu schreiben.
Aber hier gerne auch noch meine Ausarbeitung:
https://www.herber.de/bbs/user/132135.xlsm

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714051.html
Geschrieben am: 20.09.2019 10:17:09
Hallo Pierre,
meine Programmierung ist in der Datei in der VBA-Oberfläche. Dort habe ich bei der Userform und unter "ThisWorkbook" Eintragungen
Viele Grüße
Mub

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714053.html
Geschrieben am: 20.09.2019 10:18:54
Wird irgendwie bei mir gehangen haben, denke ich.
Teste erstmal die anderen Varianten, die dir genannt wurden.
Gruß Pierre

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714052.html

Geschrieben am: 20.09.2019 10:18:19

Option Explicit
Private Sub CommandButton1_Click()
Dim LoLetzte As Long
Dim ObCb As Object
With Worksheets("Sheet2")
LoLetzte = IIf(IsEmpty(.Cells(Rows.Count, 3)), _
Cells(.Rows.Count, 3).End(xlUp).Row, .Rows.Count) + 1
For Each ObCb In Me.Controls
Select Case TypeName(ObCb)
Case "CheckBox"
.Cells(LoLetzte, 3) = ObCb.Caption
LoLetzte = LoLetzte + 1
End Select
Next ObCb
End With
End Sub

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714111.html
Geschrieben am: 20.09.2019 15:37:18
Hallo Hajo_Zi,
danke für deinen Code. Ich habe auch diesen getestet. Egal ob ich nur 1 oder mehrere auswähle, schreibt er trotzdem alle Namen der Boxen untereinander in je 1 Zelle und nicht in eine hintereinander welche ich ausgewählt habe.
Viele Grüße
Mub

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714113.html
Geschrieben am: 20.09.2019 15:39:17
übersehen
Case "CheckBox"
if obcb then
.Cells(LoLetzte, 3) = ObCb.Caption
LoLetzte = LoLetzte + 1
End if
Gruß Hajo

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714117.html
Geschrieben am: 20.09.2019 15:44:47
Super. Jetzt übernimmt auch er nur die ausgewählten. Wie muss es denn geändert werden, wenn ich im eine bestimmt Zelle vorgeben will. Also bspw. immer B2 und alles in eine Zelle hintereinander
Gruß
Mub

Betrifft: AW: Checkboxen Namen beliebig in eine Zelle schreiben
von: 1714121.html
Geschrieben am: 20.09.2019 16:00:41
.Range("B2")=.Range("B2") & ObCb.Caption & " "
Zu Beginn nach With ...
.Range("B2")=""
Gruß Hajo

Excel-Beispiele zum Thema "Checkboxen Namen beliebig in eine Zelle schreiben"
Textexport in CSV-Datei mit beliebigen Feldtrennern Programmversion eines beliebigen Programms feststellen
Fehlermeldung abfangen und in sequentielle Datei schreiben Arbeitsmappe anlegen und Workbook_Open-Prozedur schreiben
Text aus UserForm in eine Zelle schreiben Zellinhalte in Verbindung mit Variablen in Textdatei schreiben
Bei Eingabe von "j" "Ja" und von "n" "Nein" schreiben Text in NotePad schreiben, speichern, in Excel aufrufen
Ersten mit einem neuen Buchstaben beginnenden Namen fett schreiben Emailrundschreiben mit vorgegebenem Text über Outlook
Bewerten Sie hier bitte das Excel-Portal