Ich versuche, ein Stück Code zu bekommen, um die Daten in einigen Zellen zu löschen, mit der Spalte Referenzen. Ich verwende den folgenden Code:
Worksheets(sheetname).Range(.Cells(2, LastColData), .Cells(LastRowData, LastColData)).ClearContents
Um dies zu tun, erhalte ich jedoch einen Fehler im ersten Abschnitt "Cells", warum ist das so?
Sie können auf ganze Spalten als Bereich zugreifen, indem Sie das Objekt Worksheet.Columns
verwenden
Etwa so:
Worksheets(sheetname).Columns(1).ClearContents
sollte den Inhalt der Spalte A löschen
Es gibt auch das Worksheet.Rows
Objekt, wenn Sie etwas Ähnliches für Zeilen tun müssen
Der Fehler, den Sie erhalten, ist wahrscheinlich auf einen fehlenden with-Block zurückzuführen.
Sie können hier über with-Blöcke lesen: Microsoft-Hilfe
Wie Gary's Student erwähnte, müssten Sie den Punkt vor Cells
entfernen, damit der Code so funktioniert, wie Sie ihn ursprünglich geschrieben haben. Ich kann mir nicht sicher sein, da Sie nur die eine Codezeile eingefügt haben, aber der Fehler, der beim Löschen der Punkte auftrat, könnte etwas damit zu tun haben, wie Sie Ihre Variablen definiert haben.
Ich habe Ihre Code-Zeile mit den als Ganzzahlen definierten Variablen ausgeführt und es hat funktioniert:
Sub TestClearLastColumn()
Dim LastColData As Long
Set LastColData = Range("A1").End(xlToRight).Column
Dim LastRowData As Long
Set LastRowData = Range("A1").End(xlDown).Row
Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).ClearContents
End Sub
Ich glaube nicht, dass eine "With"-Anweisung für die von Ihnen geteilte Codezeile angemessen ist, aber wenn Sie eine verwenden würden, würde die "With"-Anweisung am Anfang der Zeile stehen, die das Objekt definiert, das Sie manipulieren. Hier ist Ihr Code, der mit einer unnötigen "With"-Anweisung umgeschrieben wurde:
With Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData))
.ClearContents
End With
Die "With"-Anweisungen sollen Ihnen das Abtippen von Code ersparen und die Lesbarkeit Ihres Codes verbessern. Sie sind nützlich und angemessen, wenn Sie mehr als eine Sache mit einem Objekt tun. Wenn Sie zum Beispiel die Spalte rot färben und einen dicken schwarzen Rand hinzufügen möchten, könnten Sie eine With
-Anweisung wie diese verwenden:
With Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData))
.ClearContents
.Interior.Color = vbRed
.BorderAround Color:=vbBlack, Weight:=xlThick
End With
Andernfalls müssten Sie den Bereich für jede Aktion oder Eigenschaft angeben, etwa so:
Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).ClearContents
Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).Interior.Color = vbRed
Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).BorderAround Color:=vbBlack, Weight:=xlThick
Ich hoffe, dies gibt Ihnen ein Gefühl dafür, warum Gary's Student glaubte, dass der Compiler ein With
erwarten könnte (obwohl es unangebracht war) und wie und wann ein With
in Ihrem Code nützlich sein kann.
Sie benötigen eine With-Anweisung vor dieser. Oder machen Sie die .Cells zu Cells