Makro bringt Vorreferenzfehler
07.02.2020 22:42:30
Jenny
habe plötzlich ein Problem mit einem Makro, dass ich seit Monaten eigentlich problemlos nutze. Vielleicht kann mir jemand helfen, es wieder in Gang zu bekommen.
Ich bekomme folgende Meldung:
und beim Debuggen wird die Zeile
loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
markiert.
Was war nun passiert. Als ich das letzte mal das Makro einwandfrei ausgeführt hatte, waren die Zellen A1 und E1 leer, daher gaben die Formeln in C1 und F1 #NV aus. Das schien vermute ich ein Problem mit dem Makro gemacht zu haben.
Durchs sortieren stand jetzt am Ende dann eine Zeile in denen alle Formeln #NV ausgegeben haben. Diese hab ich nachdem der Fehler auftrat versucht zu löschen, aber es brachte keinen Erfolg, die Meldung kam weiter.
Bitte helft mir.
Jenny
Hier noch das Makro:
Sub Makro3()
Dim loLetzte As Long, j As Long, x As Long, lC As Long
Application.ScreenUpdating = False
With Worksheets("Ergebnis")
loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("B1:C1").Copy .Range("B1:C" & loLetzte)
.Range("B2:C" & loLetzte).Copy
.Range("B2:C" & loLetzte).PasteSpecial xlPasteValues
.Range("E1:F1").Copy .Range("E2:F" & loLetzte)
.Range("E2:F" & loLetzte).Formula = .Range("E2:F" & loLetzte).Value2
.Range("M1") = "Formel" 'Zeile 1 markieren!!
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("C1:C" & loLetzte), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=.Range("F1:F" & loLetzte), SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("A1:M1" & loLetzte)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Zeile der Markierung in Spalte l suchen
x = .Cells(Rows.Count, 13).End(xlUp).Row
'Formeln ggf. in Zeile1 zurück kopieren
If x > 1 Then
.Cells(x, 2).Resize(1, 2).Copy .Range("B1")
.Cells(x, 5).Resize(1, 8).Copy .Range("E1")
.Cells(x, 5).Copy .Range("E1")
.Rows(x).Value = .Rows(x).Value
End If
.Range("G1:L1").Copy .Range("G2:L" & loLetzte)
.Range("G2:L" & loLetzte).Copy
.Range("G2:L" & loLetzte).PasteSpecial xlPasteValues
.Cells(x, 13) = Empty 'markierung löschen
.Range("E2").Select
End With
Application.CutCopyMode = False
End Sub