Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1364to1368
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
Inhaltsverzeichnis

mehrere Userform checkBoxen auslesen

mehrere Userform checkBoxen auslesen
03.06.2014 11:57:21
Hasan
Hallo zusammen,
ich versuche als Leihe folgendes zu lösen:
Über eine Userform habe ich mehrere (Anzahl 116) Checkboxen und 6 Textboxen gestaltet.
Auf Knopfdruck soll dann die Caption der angeklickten Checkbox und die Inhalte der Textboxen in eine vorgesehene Zelle in einem Tabellenblatt übernommen werden.
Der folgende Code funktioniert ja auch soweit für wenige Checkboxen. Wenn ich es verlängere für alle 116, dann erscheint die Fehlermeldung "Prozedur zu groß".
Hat jemand eine Idee wie es es besser bauen kann. Hier der Code:

Private Sub CommandButton2_Click()
Dim erste_freie_Zeile As Integer
erste_freie_Zeile = Sheets("Pos").Range("A65536").End(xlUp).Offset(1, 0).Row
If CheckBox1.Value = True Then
Sheets("Pos").Cells(erste_freie_Zeile, 2) = CheckBox1.Caption
Sheets("Pos").Cells(erste_freie_Zeile, 1) = Format(Vertrag.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 3) = Format(Pos1.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 4) = Format(Pos2.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 5) = Format(Pos3.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 6) = Format(Pos4.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 7) = CDate(Datum.Text)
Unload Me
End If
If CheckBox2.Value = True Then
Sheets("Pos").Cells(erste_freie_Zeile, 2) = CheckBox2.Caption
Sheets("Pos").Cells(erste_freie_Zeile, 1) = Format(Vertrag.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 3) = Format(Pos1.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 4) = Format(Pos2.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 5) = Format(Pos3.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 6) = Format(Pos4.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 7) = CDate(Datum.Text)
Unload Me
End If
If CheckBox3.Value = True Then
Sheets("Pos").Cells(erste_freie_Zeile, 2) = CheckBox3.Caption
Sheets("Pos").Cells(erste_freie_Zeile, 1) = Format(Vertrag.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 3) = Format(Pos1.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 4) = Format(Pos2.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 5) = Format(Pos3.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 6) = Format(Pos4.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 7) = CDate(Datum.Text)
Unload Me
End If
If CheckBox4.Value = True Then
Sheets("Pos").Cells(erste_freie_Zeile, 2) = CheckBox4.Caption
Sheets("Pos").Cells(erste_freie_Zeile, 1) = Format(Vertrag.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 3) = Format(Pos1.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 4) = Format(Pos2.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 5) = Format(Pos3.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 6) = Format(Pos4.Text)
Sheets("Pos").Cells(erste_freie_Zeile, 7) = CDate(Datum.Text)
Unload Me
End If
End Sub
vielen Dank für Eure Antworten

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Userform checkBoxen auslesen
03.06.2014 12:05:31
Jack_d
Hallo Hasan
Ich würde es in dem Fall über eine
For each schleife Lösen
(ungetestet)

Sub test()
Dim ctrl As Msforms.Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Object.Value = True Then
With ctrl
Sheets("Pos").Cells(erste_freie_Zeile, 2) = .Caption
End With
With Sheets("Pos")
.Cells(erste_freie_Zeile, 1) = Format(Vertrag.Text)
.Cells(erste_freie_Zeile, 3) = Format(Pos1.Text)
.Cells(erste_freie_Zeile, 4) = Format(Pos2.Text)
.Cells(erste_freie_Zeile, 5) = Format(Pos3.Text)
.Cells(erste_freie_Zeile, 6) = Format(Pos4.Text)
.Cells(erste_freie_Zeile, 7) = CDate(Datum.Text)
End With
End If
End If
next
End Sub

Anzeige
AW: mehrere Userform checkBoxen auslesen
03.06.2014 12:22:34
Hasan
Hallo Jack_d,
vielen Dank für die schnelle Antwort.
Leider kommt ein Laufzeitfehler "1004" (Anwendungs- oder objektdefinierter Fehler) an und markiert die Zeile: "Sheets("Pos").Cells(erste_freie_Zeile, 2) = .Caption"

AW: mehrere Userform checkBoxen auslesen
03.06.2014 12:25:14
Jack_d
Ich geh davon aus, dass du den Code nochmal geprüft hast und deine variable erste_freie_Zelle Ergänzt hast?
Die ist mir nämlich auf halben Weg verloren gegangen.
Grüße

AW: mehrere Userform checkBoxen auslesen
03.06.2014 12:33:32
Hasan
Hallo Jack_d,
habe es gelöst. Mit der folgenden Ergänzung läuft es jetzt genau so wie es soll. Danke Dir.
Private Sub CommandButton2_Click()
Dim erste_freie_Zeile As Integer
Dim ctrl As Msforms.Control
erste_freie_Zeile = Sheets("Pos").Range("A65536").End(xlUp).Offset(1, 0).Row
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Object.Value = True Then
With ctrl
Sheets("Pos").Cells(erste_freie_Zeile, 2) = .Caption
End With
With Sheets("Pos")
.Cells(erste_freie_Zeile, 1) = Format(Vertrag.Text)
.Cells(erste_freie_Zeile, 3) = Format(Pos1.Text)
.Cells(erste_freie_Zeile, 4) = Format(Pos2.Text)
.Cells(erste_freie_Zeile, 5) = Format(Pos3.Text)
.Cells(erste_freie_Zeile, 6) = Format(Pos4.Text)
.Cells(erste_freie_Zeile, 7) = CDate(Datum.Text)
End With
End If
End If
Next
End Sub

Anzeige
Danke für die Rückmeldung owT
03.06.2014 12:43:00
Jack_d
ohne weiteren Text

AW: Danke für die Rückmeldung owT
03.06.2014 12:44:28
Hasan
GERNE, ich hab zu Danken...

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige