Ich schrieb ein VB-Makro in Excel, um ein "Autotest" Arbeitsblatt aktiv zu setzen und die Zelle mit der genauen Übereinstimmung "Datum" zu aktivieren. Dann wechsle ich jedes Datum unter dieser Zelle, um den Jahreswert vor 4 Jahren zu erhöhen. Ich habe viele Datensätze, also wollte ich, dass dies unabhängig vom Format der Arbeitsbücher funktioniert. Ich weiß, dass es immer einen "Autotest" -Blatt geben wird und ich weiß, dass es immer eine Zelle "Datum" über der Liste der Daten geben wird. Dieser Code funktioniert für die meisten Datensätze, aber ich bekomme diesen Fehler, das Debug-Punkte auf die lastrow
-Anweisung, aber ich kann das Problem nicht feststellen. Danke im Voraus.Laufzeitfehler empfangen '1004' Anwendungsdefinierter oder objekterweiterter Fehler
Sub FourYrsAhead()
' FourYrsAhead Macro
' This macro will forward all of the dates under the "Dates" column in the Autotest sheet forward 4 years.
'Sets variable lastRow as an integer
Dim lastRow As Integer
'Sets theSheetImWorkingOn as a worksheet variable
Dim theSheetImWorkingOn As Worksheet
'Sets theColumnNumberForTheDates as an integer
Dim theColumnNumberForTheDates As Integer
'Activates the Autotest worksheet as the active sheet
Worksheets("Autotest").Activate
'Finds the exact string 'Date' and makes it the active cell
Cells.Find(What:="Date", LookAt:=xlWhole).Activate
'Sets the column number to the current active call value
theColumnNumberForTheDates = ActiveCell.Column
'Sets the sheet that will be worked on
Set theSheetImWorkingOn = Sheets("Autotest")
'Sets the last row variable
lastRow = theSheetImWorkingOn.Cells(1000000, theColumnNumberForTheDates).End(xlUp).Row
'For loop that starts as the active cell row plus 1 and loops down each row
For x = ActiveCell.Row + 1 To lastRow
'Changes the yyyy value in each row ahead 4 years
theSheetImWorkingOn.Cells(x, theColumnNumberForTheDates) = DateAdd("yyyy", 4, theSheetImWorkingOn.Cells(x, theColumnNumberForTheDates))
'Moves to the next row
Next x
End Sub
Fehler 1004 bedeutet immer eine Variable existiert nicht oder ist nicht definiert. Wenn Sie sich im Debug-Modus befinden, bewegen Sie den Mauszeiger über Ihre Variablen. Ich wette, Sie werden feststellen, dass 'theColumnNumberForTheDates' keine gültige Referenz ist. (Es ist wahrscheinlich auf ein anderes Blatt zeigen ... Siehe diesen Thread: http://StackOverflow.com/Questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) – Tim
@Tim Wenn ich Bewegen Sie den Mauszeiger über theColumnNumberForTheDates, es hat einen definierten Wert von "4" was korrekt ist, da die 'Date'-Zelle sich in der 4. Spalte befindet –
@PhilippeGrondier Ich habe den Code aus einem Tutorial online gefunden, ich dachte, der Datensatz würde niemals reichen diese nummer und der code scheint mit den meisten datensätzen zu funktionieren, die ich so idk habe, warum es hier nicht funktioniert. –