Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
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

While- in einer For-Schleife

While- in einer For-Schleife
07.06.2018 14:06:03
Christof
Hallo allerseits,
Ich habe ein Problem und komme einfach nicht auf die Lösung. Ich habe eine Arbeitsmappe, in der ich auf verschiedenen Arbeitsblättern Werte berechne und diese dann auf dem letzten Arbeitsblatt benutze, wodurch Werte entstehen, die wiederum in den ersten Arbeitsblättern zur weiteren Berechnung benötigt werden. Klingt kompliziert, ich weiß
Mein Gedanke war also, dass ich die Werte aus dem letzten Arbeitsblatt in die anderen Arbeitsblätter kopiere, dort dann die Formeln "runterziehe" und die berechneten Werte wieder auf das letzte Blatt kopiere. Soweit bin ich leider noch nicht.
Aber hier erstmal mein Code:

Sub Schaltfläche1_Klicken()
Dim zeile As Long
Dim zeile1 As Long
Dim spalte As String
Dim spalte1 As String
Dim spalte2 As String
Dim Ini As Long
Dim WS_Count As Integer
Dim x As Integer
Ini = ThisWorkbook.Worksheets("test").Range("M2").Value
WS_Count = ActiveWorkbook.Worksheets.Count
spalte = "K"
spalte1 = "B"
spalte2 = "A"
zeile = 2
For x = 1 To WS_Count
Do While Sheets(ActiveWorkbook.Worksheets(x).Name).Range(spalte & zeile).Value >= Ini
zeile1 = zeile + 1
Sheets(ActiveWorkbook.Worksheets(x).Name).Range(spalte & zeile).Copy
Sheets(ActiveWorkbook.Worksheets(x).Name).Range(spalte2 & zeile1).Value = zeile
Sheets(ActiveWorkbook.Worksheets(x).Name).Range(spalte1 & zeile1).PasteSpecial  _
xlPasteValues
Call Formel_runter(ActiveWorkbook.Worksheets(x).Name, zeile, zeile1)
zeile = zeile + 1
Loop
Next
End Sub

Was ich mir dabei gedacht habe: Ich gebe zunächst mal den Blättern eine ID, die ich dann in der For-Schleife abfrage. Dann führe ich in der While-Schleife für jedes Tabellenblatt meine Copy-Paste-Formelgeschichte durch, bis ein festgelegter Wert unterschritten wird. Dann bricht die While Schleife ab und Excel könnte mit der Berechnung auf der nächsten Seite fortfahren. Das funktioniert jedoch mit meinem Code nicht. Vermutlich wegen Erfüllung der Bedingung und damit der Beendigung der While-Schleife?!
Kann mir jemand helfen?

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

Betreff
Datum
Anwender
Anzeige
AW: While- in einer For-Schleife
07.06.2018 14:09:10
Christof
Edit: Formel_runter ist die Funktion, die die Formeln entsprechend "runter zieht". Die funktioniert tadellos.
AW: While- in einer For-Schleife
07.06.2018 16:14:52
Peter(silie)
Hallo,
welche Formel "ziehst" du denn runter?
Eine Beispiel Mappe wäre hilfreich.
AW: While- in einer For-Schleife
11.06.2018 08:24:19
Christof
Hallo Peter,
Ich kann leider keine Arbeitsmappe hochladen. Geht aufgrund des Datei-Formats wohl nicht?!
Bei den Formeln handelt es sich zum Beispiel um so eine:

=WENN(A2
Und die Funktion, mit der ich alle meine Formeln bzw. teilweise auch einfach konstante Werte herunterziehe, ist diese hier:

Sub Formel_runter(WorkSheetName As String, A As Long, B As Long)
Dim LetzteSpalte As Integer    'letzte Spalte
LetzteSpalte = 12
For i = 3 To LetzteSpalte 'Von Spalte 3 bis zur letzten Spalte
With ActiveWorkbook.Worksheets(WorkSheetName)
.Range(.Cells(A, i), .Cells(B, i)).Formula = .Cells(A, i).Formula 'Von Zelle n in Spalte i  _
bis zur letzten Zeile in Spalte i
End With
Next
End Sub

Anzeige
AW: While- in einer For-Schleife
11.06.2018 11:05:31
Christof
Das Problem besteht weiterhin.
AW: While- in einer For-Schleife
12.06.2018 12:47:57
mmat
Hallo,
ich hab so ein bisschen den Eindruck, dass dein runterziehen nicht tut was es soll (allerdings nicht getestet)
Probiers mal so:
Sub WorksheetBearbeiten(n As Long)
Dim Zeile As Long, NächsteZeile As Long
Dim Ini As Long
Ini = ThisWorkbook.Worksheets("test").Range("M2").Value
Worksheets(n).Select
Zeile = 2
Do While ActiveSheet.Cells(Zeile, 11).Value >= Ini 'Spalte K
NächsteZeile = Zeile + 1
Cells(NächsteZeile, 1).Value = Zeile 'Spalte A
Range(Cells(Zeile, 3), Cells(Zeile, 12)).Copy Cells(NächsteZeile, 3) 'Spalten C-L  _
runterziehen
Zeile = Zeile + 1
Loop
End Sub
Sub Schaltfläche1_Klicken()
Dim n
For n = 1 To Worksheets.Count
WorksheetBearbeiten n
Next
End Sub

Anzeige
AW: While- in einer For-Schleife
12.06.2018 15:20:13
Christof
Hallo mmat.
Danke für die Antwort.
Ich habe in der Zwischenzeit selbst das Problem entdeckt: Das Problem war, dass ich den Startwert für 'Zeile' vor meiner For-Schleife deklariert habe. Dadurch wurde nach Ablauf der ersten For-Bedingung ein viel zu hoher Wert für 'Zeile' an den zweiten Durchlauf übergeben. In den betroffenen Zellen waren dann keine Formeln vorhanden.
Ich musste also für jeden For-Schleifen-Durchgang am Anfang wieder 'Zeile = 2' setzen. Nun funktioniert alles.
Trotzdem vielen Dank!

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige