Makro führt nicht bis zum Schluss aus
28.03.2022 15:24:45
Sabine
ich hatte bereits vor einer Woche einen Thread geöffnet, dieser hier:
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1876210
Ich habe nun den Fehler gefunden, der dazu führt, dass sich der Bezug der Formeln ändert.
Beim Aktualisieren der Tabelle verrutscht der Zellbezug der letzten Zeile des rechten Bereiches (welcher nicht zur formatierten Tabelle gehört) auf die neue letzte Zeile des aktualisierten Datenbereiches. Das passiert aber nur bei der letzten Zeile.
Also möchte ich nun, dass das Makro die letzte Zeile löscht und die Zeile zuvor bis nach unten kopiert.
Hier ist die Datei:
https://www.herber.de/bbs/user/152112.xlsm
Mein neuer Code lautet:
Sub Formeln()
Dim i As Integer
Dim j As Integer
Dim Sp As Integer
Application.ScreenUpdating = False
i = 6729 'Zeile, von wo aus gestartet wird = Counter, wie viele Zeilen
j = 6724 'Zeile, von wo aus gestartet wird = Counter, wie viele Zeilen
Sp = 115 'Spalte, von wo aus gestartet wird = Counter, wie viele Spalten
Do Until ActiveSheet.Range("A" & i).Value = "" 'Spalte A Zeilen zählen
i = i + 1
Debug.Print i
Loop
Do Until ActiveSheet.Range("K" & j).Value = "" 'Spalte K
j = j + 1
Debug.Print j
Loop
Do Until ActiveSheet.Cells(1, Sp).Value = "" 'In Zeile eins bei den Überschriften schauen
Sp = Sp + 1
Debug.Print Sp
Loop
If i > j Then 'so lange DB länger ist als Berechnung daneben
Cells(j - 1, 11).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.ClearContents
Do Until i + 1 = j + 1 'bis die Zeilen gleich sind
ActiveSheet.Range(Cells(j - 2, 11), Cells(j - 2, Sp - 1)).Select 'ab Spalte K (= 11) Zeilen markieren bis letzte Spalte = Counter Sp
Selection.Copy
j = j + 1
Range(Cells(j - 2, 11), Cells(j - 2, Sp - 1)).Select
Selection.PasteSpecial xlPasteFormulas
Debug.Print j
Loop
End If
Application.ScreenUpdating = True
End Sub
Das Problem ist jetzt, dass die letzte Zeile ohne Formel bleibt - und ich weiß nicht wie ich das ändern kann. habe bereits bei Do Until von i-1=j-1 geändert auf i+1=j+1, aber das debug.print zeigt an, dass das j bei der letzten Zeile bleibt und dann die If Formel verlassen wird. Kann mir da jemand helfen?Rudi hatte übrigens letztes Mal diesen Code gepostet:
Sub Formeln2()
Dim lngD As Long, lngF As Long, lngC As Long
lngD = Cells(Rows.Count, 1).End(xlUp).Row 'Spalte A
lngF = Cells(Rows.Count, 11).End(xlUp).Row 'Spalte K
lngC = Cells(1, Columns.Count).End(xlToLeft).Column 'Zeile 1 - Anzahl Spalten
If lngD
Aber wie das so ist bei fremden Codes, weiß ich natürlich nicht, wie ich das hier einbauen muss, weil ich es auch nur bedingt verstehe.Zudem möchte ich auch gerne wissen, was ich bei meinem ändern muss.
Danke und liebe Grüße,
Sabi