3 For...Next-Schleifen ineinander gelegt
05.02.2023 14:24:50
KSMBln
Hallo zusammen, Ich stoße immer wieder an meine Gedankengrenze, wenn ich For...Next-Schleifen machen möchte. Bis jetzt konnte ich immer nur eine Schleife erstellen (diese haben funktioniert). Diesmal brauche ich aber mindestens 2 Parallel. habe schon auf diversen seiten geschaut. Auf einigen steht auch wie man sie macht :) (Versuche nicht immer gescheitert, aber Ergebis immer falsch) Nun möchte ich aber in eine Zelle etwas bestimmes schreiben: Es soll in einer seperaten Excel-Tabelle "Schalthilfe" in der Spalte "A" Daten eingetragen werden. Sie sehen folgendermaßen aus: [Zelle in Tabelle_Schalthilfe].range("A"&T).value = [Element] & "/" & [DA]. Wobei T A2-A26; Element [variabel](je nach Slot) und DA 1-15 (nur Ungerade) sein kann. in Zelle A2 steht zum Beispiel: A2 = "40/1"; A3 = "40/5" (Togglebutton38 ist eingeschaltet=übersprungen) Dabei muß sich das Element solange wiederholen bis 15 erreicht ist. Erst dann darf es um 1 erhöht werden. wobei die Abfrage bei Togglebutton37 beginnt und bei Togglebutton60 endet (alle anderen werden ignoriert) Dazu kommt noch sie Zelle aus der Tabelle "Schalthilfe" "Ax" wo immer eine leere Zelle unter der belegten 'Zelle gesucht wird (Zelle A2-ff) Da es maximal 24 Ports sind sollte das Ende bei "A25" (Überschrift[A1]+24) liegen. Ports die nicht belegt sind werden ausgelassen (Togglebutton.value=true) es müssen dann drei For...Next ineinander gelegt werden: Element; DA und Zelle (Reiehnfolge muß festgelegt werden) Bild zur Userform: hierbei ist die Combobox wichtig, sie gibt "E" an. Bisherige Formel:Private Sub CommandButton_Fin_Click() 'Variablen erstellen Dim Elem1 As Integer Dim Elem2 As Integer Dim DA1 As Integer Dim DA2 As Integer Dim TB1 As Integer Dim TB2 As Integer Dim ZeB As Integer Dim ZeZ As Integer Dim Z As Integer Dim E As Integer Dim D As Integer Dim T As Integer 'Variable festlegen DA1 = 1 'für Elemente-DA 1-15 DA2 = 15 'für Elemente-DA 1-15 TB1 = 37 'für ToggleButtom 1-72 TB2 = 60 'für ToggleButton 1-72 ZeB = 2 'für die Zellen in der Extradatei A2-A26 ZeZ = 26 'für die Zellen in der der Extradatei A2-A26 'neue Excel-Datei anlegen 'entnommen von https://www.automateexcel.com/de/vba/schleifen/ 'entnommen aus Makro-Erstellung 'entnommen von https://learn.microsoft.com/de-de/office/vba/excel/concepts/workbooks-and-worksheets/create-a-workbook 'Set NewBook = Workbooks.Add 'aufrufen einer neuen Excel-Datei 'With NewBook ' .Title = "Schalthilfe" 'benennen der Datei ' .Subject = "Schaltpunkte" ' .Sheets("Tabelle1").Select ' Range("A1").Select ' Selection.Font.Bold = True ' ActiveCell.FormulaR1C1 = "XDSL-Neu" ' Columns("A:A").Select ' Selection.NumberFormat = "@" ' Range("A2").Select ' .SaveAs Filename:="Schalthilfe.xlsx" 'Speichern der Datei (in Dokumente) 'End With Tabelle_Schalthilfe.Visible = xlSheetVisible Tabelle_Schalthilfe.Range("A:A").Clear Tabelle_Schalthilfe.Range("A1").Font.Bold = True Tabelle_Schalthilfe.Range("A1").FormulaR1C1 = "XDSL-Neu" Tabelle_Schalthilfe.Columns("A:A").NumberFormat = "@" 'Entnommen aus https://www.excel-vba-lernen.de/07-for-next 'entnommen aus https://learn.microsoft.com/de-de/dotnet/visual-basic/language-reference/statements/for-next-statement 'entnommen aus https://www.vba-tutorial.de/ablaufsteuerung/schleifen.htm 'Abfrage der Combobox If ComboBox_Slot.Text = 201 Then Elem1 = 4 Elem2 = 6 GoTo Slot201 Else If ComboBox_Slot.Text = 202 Then Elem1 = 13 Elem2 = 15 GoTo Slot202 Else If ComboBox_Slot.Text = 203 Then Elem1 = 22 Elem2 = 25 GoTo Slot203 Else If ComboBox_Slot.Text = 204 Then Elem1 = 31 Elem2 = 33 GoTo Slot204 Else If ComboBox_Slot.Text = 207 Then Elem1 = 40 Elem2 = 42 GoTo Slot207 Else If ComboBox_Slot.Text = 208 Then Elem1 = 49 Elem2 = 51 GoTo Slot208 Else End If End If End If End If End If End If 'Bearbeitung Slot 201 Slot201: Slot201: E = Label_Elem4.Caption '"E" wird mit dem Inhalt vom Label4 belegt (gesetzt durch Combobox_Slot) For T = TB1 To TB2 'ToggleButton Z = T - 35 If Me.Controls("ToggleButton" & CStr(T)).Value = False Then For D = 1 To 15 Step 2 '"Senkrechte" DA 1-15 Tabelle_Schalthilfe.Range("A" & Z).Value = E & "/" & D If D = 15 Then E = E + 1 End If Next D End If Next T GoTo Ende 'Bearbeitung Slot 202 Slot202: GoTo Ende 'Bearbeitung Slot 203 Slot203: GoTo Ende 'Bearbeitung Slot 204 Slot204: GoTo Ende 'Bearbeitung Slot 207 Slot207: GoTo Ende 'Bearbeitung Slot 208 Slot208: GoTo Ende Ende: Tabelle_Schalthilfe.Select Unload Me End SubJetzt kommt dies Ergebnis raus: XDSL-Neu 40/15 41/15 42/15 43/15 44/15 45/15 46/15 47/15 48/15 49/15 50/15 51/15 52/15 53/15 54/15 55/15 56/15 57/15 58/15 59/15 60/15 61/15 62/15 63/15 was falsch ist (es wird zumindest etwas geschrieben) Leider klappt es nicht so wie ich denke. Kann mir jemand helfen? Danke Klaus