Sütun referanslarını kullanarak bazı hücrelerdeki verileri temizlemek için bir kod parçası almaya çalışıyorum. Aşağıdaki kodu kullanıyorum:
Worksheets(sheetname).Range(.Cells(2, LastColData), .Cells(LastRowData, LastColData)).ClearContents
Bunu yapmak için, ancak ilk .Cells bölümünde bir hata alıyorum, bunun nedeni nedir?
Sütunun tamamına Worksheet.Columns
nesnesini kullanarak bir aralık olarak erişebilirsiniz
Şöyle bir şey:
Worksheets(sheetname).Columns(1).ClearContents
A sütununun içeriğini temizlemelidir
Satırlar için benzer bir şey yapmanız gerekiyorsa, Worksheet.Rows
nesnesi de vardır
Aldığınız hata büyük olasılıkla eksik bir with bloğundan kaynaklanmaktadır.
Bloklarla ilgili bilgileri buradan okuyabilirsiniz: Microsoft Yardım
Gary's Student'ın belirttiği gibi, kodun ilk yazdığınız gibi çalışmasını sağlamak için `Cells'ten önceki noktayı kaldırmanız gerekir. Sadece bir satır kod eklediğiniz için emin olamıyorum, ancak noktaları sildiğinizde aldığınız hatanın değişkenlerinizi nasıl tanımladığınızla bir ilgisi olabilir.
Kod satırınızı değişkenler tamsayı olarak tanımlanmış şekilde çalıştırdım ve çalıştı:
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
Bir With
deyiminin paylaştığınız kod satırına uygun olduğunu düşünmüyorum, ancak bir tane kullanacak olsaydınız, With
manipüle ettiğiniz nesneyi tanımlayan satırın başında olurdu. İşte gereksiz bir With
deyimi kullanılarak yeniden yazılmış kodunuz:
With Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData))
.ClearContents
End With
Withdeyimleri sizi kodu yeniden yazmaktan kurtarmak ve kodlamanızın okunmasını kolaylaştırmak için tasarlanmıştır. Bir nesne ile birden fazla şey yapıyorsanız kullanışlı ve uygun hale gelir. Örneğin, sütunu kırmızıya çevirmek ve kalın siyah bir kenarlık eklemek istiyorsanız, aşağıdaki gibi bir
With` deyimi kullanabilirsiniz:
With Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData))
.ClearContents
.Interior.Color = vbRed
.BorderAround Color:=vbBlack, Weight:=xlThick
End With
Aksi takdirde, her eylem veya özellik için aralığı aşağıdaki gibi bildirmeniz gerekir:
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
Umarım bu size Gary'nin derleyicinin neden bir With
beklediğini (uygun olmamasına rağmen) ve With
in kodunuzda nasıl ve ne zaman yararlı olabileceğini anlamanızı sağlar.