Ich habe in meinem Formular ein nächstes Problem. Auf dem Formular 2 habe ich ein "Antragsformular" bei welchem durch anwählen von Checkboxen vers. Elemente bestellt werden können. Hier im Beispiel Wert 1 bis Wert 7.
Daneben befindet sich eine Listbox, hier sollen durch anklicken von Wert_1 bis Wert 7 bestimmte Checkboxen zum vorschein kommen. Dieser Part funktioniert soweit dank der Hilfe hier im Forum. :)
Mein nächstes Problem ist das ich leider den Code noch nicht richtig verstanden habe und ihn daher nicht schaffe selber anzupassen (Google konnte mir leider auch nicht helfen :20: )
Ich hätte gerne wie in der Beispieldatei die Werte in der Spalte B auch als neue Spalte in der Listbox. Kann mir da wieder jemand behilflich sein? :)
Hier der Code:
Code:
Private Sub Weiter_Click() Dim i As Long, j As Long Dim varMatrix As Variant
varMatrix = Worksheets("Matrix").Range("A2:H19").Value With Me .ListBox1.Clear For i = 1 To 9 For j = 1 To 7 If Len(varMatrix(i, j + 1)) Then If Me.Controls(j) Then
.ListBox1.AddItem varMatrix(i, 1)
Exit For End If End If Next j Next i .ListBox1.ListStyle = fmListStyleOption .ListBox1.MultiSelect = fmMultiSelectMulti End With
teste mal den unten stehenden Code. Es sind zwei neue Codezeilen hinzugekommen, die im Code gekennzeichnet sind.
Code:
Private Sub Weiter_Click() Dim i As Long, j As Long Dim varMatrix As Variant
varMatrix = Worksheets("Matrix").Range("A2:H19").Value With Me .ListBox1.Clear .ListBox1.ColumnCount = 2 'neue Codezeile For i = 1 To 9 For j = 1 To 7 If Len(varMatrix(i, j + 1)) Then If Me.Controls(j) Then .ListBox1.AddItem varMatrix(i, 1) .ListBox1.List(ListBox1.ListCount - 1, 1) = varMatrix(i, 2) 'neue Codezeile Exit For End If End If Next j Next i .ListBox1.ListStyle = fmListStyleOption .ListBox1.MultiSelect = fmMultiSelectMulti End With
End Sub
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28 • Zeichner
habe gerade gesehen, dass Du nur Werte bis 6 hast.
So müsste es klappen:
Code:
Private Sub Weiter_Click() Dim i As Long, j As Long Dim varMatrix As Variant
varMatrix = Worksheets("Matrix").Range("A2:H19").Value With Me .ListBox1.Clear .ListBox1.ColumnCount = 2 'neue Codezeile For i = 1 To 9 For j = 1 To 6 If Len(varMatrix(i, j + 2)) Then If Me.Controls(j) Then .ListBox1.AddItem varMatrix(i, 1) .ListBox1.List(ListBox1.ListCount - 1, 1) = varMatrix(i, 2) 'neue Codezeile Exit For End If End If Next j Next i .ListBox1.ListStyle = fmListStyleOption .ListBox1.MultiSelect = fmMultiSelectMulti End With
End Sub
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28 • Zeichner
20.03.2020, 09:02 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2020, 09:02 von Zeichner.)
(19.03.2020, 22:40)atilla schrieb: Hallo,
habe gerade gesehen, dass Du nur Werte bis 6 hast.
So müsste es klappen:
Code:
Private Sub Weiter_Click() Dim i As Long, j As Long Dim varMatrix As Variant
varMatrix = Worksheets("Matrix").Range("A2:H19").Value With Me .ListBox1.Clear .ListBox1.ColumnCount = 2 'neue Codezeile For i = 1 To 9 For j = 1 To 6 If Len(varMatrix(i, j + 2)) Then If Me.Controls(j) Then .ListBox1.AddItem varMatrix(i, 1) .ListBox1.List(ListBox1.ListCount - 1, 1) = varMatrix(i, 2) 'neue Codezeile Exit For End If End If Next j Next i .ListBox1.ListStyle = fmListStyleOption .ListBox1.MultiSelect = fmMultiSelectMulti End With
20.03.2020, 11:06 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2020, 11:07 von Zeichner.)
(19.03.2020, 22:40)atilla schrieb: Hallo,
habe gerade gesehen, dass Du nur Werte bis 6 hast.
So müsste es klappen:
Code:
Private Sub Weiter_Click() Dim i As Long, j As Long Dim varMatrix As Variant
varMatrix = Worksheets("Matrix").Range("A2:H19").Value With Me .ListBox1.Clear .ListBox1.ColumnCount = 2 'neue Codezeile For i = 1 To 9 For j = 1 To 6 If Len(varMatrix(i, j + 2)) Then If Me.Controls(j) Then .ListBox1.AddItem varMatrix(i, 1) .ListBox1.List(ListBox1.ListCount - 1, 1) = varMatrix(i, 2) 'neue Codezeile Exit For End If End If Next j Next i .ListBox1.ListStyle = fmListStyleOption .ListBox1.MultiSelect = fmMultiSelectMulti End With
End Sub
Hi noch einmal Was müsste ich den jetzt noch ändern wenn ich die Checkboxen nicht durchnummeriert habe sondern z.b. Checkbox_Wert1, Checkbox_Name usw.? Da ich schon relativ viel Code in diesem Formular habe, wäre ich froh wenn ich die namen der Checkboxen für die Übersichtlichkeit so lassen könnte.. Ausserdem habe ich an erster Stelle eine Combobox mit 3 auswahlmöglichkeiten, und bei den Auswaqhlmöglichkeiten nr 2+3 soll das gleiche passieren wie wenn ich die anderen Checkboxen anwähle, bei der Auswahl nr 1 sollte nichts passieren..
Sorry für die Vielen Fragen, aber leider komme ich nur sehr selten zum Programmieren und bin daher nicht sehr routiniert und verstehe außerdem auch nicht alle Teile des Codes..
Du könntest Dir z.B. eine Liste mit den Namen der Checkboxen erstellen und diese dann abarbeiten ...
Hi schauan
Danke für deine Antwort
Habe es Probiert aber leider hakt es momentan immer noch....
Mit dem Abschnitt "Werte_Y = Worksheets("Matrix").Cells(1, Y)" habe ich die Liste erstellt, leider weis ich aber nicht genau wie implementieren :(
Außerdem habe ich ein weiteres Problem, es gibt in meinem Formular neu eine Combobox welche ich gerne mit einbeziehen würde, mit den Inhalten "Wert_1, Wert_2, Wert_3" Wie gesagt, die Beispiel-Datei ist nur ein Dummie, die richtigen werte sind normaler Text..
Private Sub UserForm_Click() Dim iCnt%, strCB$ For iCnt = 3 To 11 strCB = Cells(1, iCnt) Debug.Print Me.Controls.Item(strCB).Name Next End Sub
Der Code gibt die Namen der CB's im Debug-Fenster aus, wenn DU auf die Grundfläche des UF klickst. Wert_* gibt es aber nicht
Relevant ist der Teil: Me.Controls.Item(strCB)
Da könntest Du in einer weiteren Schleife aus deinen Zellen die entsprechenden Einträge holen oder andere Steuerelemente schalten oder was auch immer damit anzustellen ist ... Im Prinzip z.B.
For iCnt = 3 To 11 strCB = Cells(1, iCnt) For kCnt = 2 To 9 If Cells(kcnt,icnt) = "X" And Me.Controls.Item(strCB).Value = True Then 'Mach was mit Cells(kcnt, 1) und Cells(kcnt, 2) End If Next Next
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)