1.7k Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (119 Punkte)
Hallo Excel Freunde,
habe ein Problem mit einer For Next Schleife, erstens müßte diese in VAB Basic umgeschrieben werden, da sie jetzt nur in Basic funktioniert. Die For-Next Schleife II = A to B sollte Zahlenwerte in (II) bei fünf Durchläufe wie in der Kontroll-Ausgabe angegeben erzeugen. Den Anfangs- VBA Code habe ich selbst versucht zuschreiben, aber weiter kam ich nicht.
Gruß kalli

Sub Makro2()

Dim intNr As Integer, antNr As Integer, entNr As Integer

intNr = IIf(Cells(15, 9) < 12, Cells(15, 9) + 1, 1)

antNr = IIf(Cells(15, 1) < 12, Cells(15, 12) - 1, 12) 'rückwärts Zähler 12 bis 1
If antNr < 1 Then antNr = 12

bntNr = IIf(Cells(15, 1) < 12, Cells(15, 13) - 1, 12) 'rückwärts Zähler 12 bis 1
If entNr < 1 Then entNr = 12

''''''''''''''''''''''''''''''''''''''''''''
A = 11 ' = antNr - statt A = 11
B = 12 ' = bntNr - statt B = 12

For I = 1 To 5
For ii = A To B 'in < ii > sollte diese Zahleninhalte beinhalten
' 11 12 10 11 12 8 9 10 11 5 6 7 8 9 1 2 3 4 5 6

A = A – 1 ' = antNr = entNr - 1 - statt A = A - 1
B = B – 1 ' = bntNr = entNr - 1 - statt B = B - 1

Next ii

A = A + 1 ' = antNr = entNr - 1 - statt A = A + 1
B = B + 2 ' = bntNr = entNr - 1 - statt B = B + 2
Next I
'''''''''''''''''''''''''''''''''''''''''''''
Cells(15, 10) = ii ' .................Cells(15, 10) = ii

End Sub

3 Antworten

0 Punkte
Beantwortet von kauz Mitglied (291 Punkte)
Hallo Kalli...
ich kann nicht nachvollziehen, für was das gebraucht wird.
So schreib ich nur mal, was mir aufgefallen ist:

Da in diesem Code Tabellenzellen angesprochen werden, ist das für mich VBA-Code und kein reines Visual-Basic, mit dem sich eine Exe-Datei erstellen läßt.

Es werden drei Variablen deklariert:
<<< intNr ; antNr und entNr >>>
Hier wird aber an bntNr ein Wert übergeben:

bntNr = IIf(Cells(15, 1) < 12, Cells(15, 13) - 1, 12) 'rückwärts Zähler 12 bis 1
In dieser Bedingung bekommt entNr immer den Wert 12... sie kann ohne vorherige Wertzuweisung nur den Inhalt 0 haben:

If entNr < 1 Then entNr = 12


Und als letztes zu der Schleife:
Nach meiner Kenntniss unterscheidet sich eine Rückwärtsschleife durch ein nachgestelltes STEP - 1.... also
Forwärts: For i=1 TO 10
Rückwärts: For i=10 to 1 Step -1

Vielleicht hilft Dir das ja trotzdem weiter...

In diesem Sinne...
Gruß
Kauz
0 Punkte
Beantwortet von Mitglied (119 Punkte)
Vielen Dank von mir Herr Kauz für Ihre Antwort,
ich möchte nun hiermit die ersten Frage beantworten, es wird hier keine exe Datei benötigt sondern ich gebrauche hierfür einen VBA Code der mit einem Makro betätigt wird.
ja im ersten Moment denkt man es ist ganz einfach mit nur Step -1, hier sollte aber ein erzeugter Zahlenbereich von 1 -12 rückwärts unregelmäßig vorschoben werden der mit der äußersten FOR NEXT Schleife For I = 1 to 5 diesen Vorgang ausführt.

Um diesen Zahlebereich zu erzeugen habe ich mit einem einfachem Basic das ich leider nur kann die oben angegeben Zählewerte und die Variablen genau für die For Next Schleifen angepasst und lauffähig gemacht., dieses Programm hätte ich nun gerne in einem VBA Code. .

So sollte nun beim ersten Durchlauf die Zahlenwerte in der inneren Schleifevariable < ii > 11 und 12 erzeugen
der zweite Durchlauf beginnt dann mit den Zahlen 10 11 12.
der dritte Durchlauf beginnt dann mit 8 9 10 11
Ddr vierte Durchlauf beginnt dann mit 5 6 7 8 9.
der fünfte Durch lauf beginnt dann mit 1 2 3 4 5 6
Diese Zahlenwerte sollten in der inneren FOR NeXT Schleife in Variable ii erzeugt und mit Cells(15, 10) = ii oder mit einer anderen Ausgabe abgefragt und angezeigt werden können, diese ist auch die Hauptbedinnung für die Erstellung dieses Programmes.
''''''''''''''''''''''''''''''''''''''''''''
A = 11 : B = 12
For I = 1 To 5
For ii = A To B
A = A – 1 : B = B – 1
Next ii
A = A + 1: B = B + 2
Next I
'''''''''''''''''''''''''''''''''''''''''''''
antNr = IIf(Cells(15, 1) < 12, Cells(15, 12) - 1, 12) 'rückwärts Zähler 12 bis 1
If antNr < 1 Then antNr = 12

bntNr = IIf(Cells(15, 1) < 12, Cells(15, 13) - 1, 12) 'rückwärts Zähler 12 bis 1
If entNr < 1 Then entNr = 12

Ich hatte mir nur gedacht mit diesen beiden Vorschläge die festen Werte erstens die Variable <A> Zähler 11 mit antNr auführen zu lassen und mit bntNr dir Variable <B> Zähler 12 ausführen lassenzu können nur als Vorschlag, da ja bei Betätigung des Makros die Zähler immer um eins zurück gesetzt werden und somit habe ich gedacht diese so einsetzten zu können

Ja lieber Herr Kauz, ich hoffe Ihnen ein wenig verständlicher klar zu machen was ich damit erreichen wollte, vielleicht können sie mir hirfür eine Lösung in VBA Code schreiben, vielen Dank im voraus.
Gruß Kallie
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

ein beispiel fuer eine schleife

gruss nighty

Sub Schleife()
For Each zelle In Array(11, 12, 10, 11, 12, 8, 9, 10, 11, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6)

Next zelle
End Sub
...