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 Sub
Jetzt 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
Anzeige