Saya mencoba mendapatkan sepotong kode untuk menghapus data di beberapa sel, menggunakan referensi kolom. Saya menggunakan kode berikut:
Worksheets(sheetname).Range(.Cells(2, LastColData), .Cells(LastRowData, LastColData)).ClearContents
Untuk melakukan ini, namun saya mendapatkan kesalahan pada bagian .Cells pertama, mengapa demikian?
Anda bisa mengakses seluruh kolom sebagai range menggunakan objek Worksheet.Columns
Sesuatu seperti:
Worksheets(sheetname).Columns(1).ClearContents
harus menghapus isi kolom A
Ada juga objek Worksheet.Rows
jika Anda perlu melakukan sesuatu yang serupa untuk baris
Kesalahan yang Anda terima kemungkinan disebabkan oleh blok yang hilang.
Anda dapat membaca tentang blok with di sini: Bantuan Microsoft
Seperti yang disebutkan oleh Siswa Gary', anda perlu menghapus titik sebelum Cells
untuk membuat kode bekerja seperti yang anda tulis semula. Saya tidak bisa memastikan, karena anda hanya menyertakan satu baris kode, tetapi kesalahan yang anda dapatkan ketika anda menghapus titik-titik itu mungkin ada hubungannya dengan bagaimana anda mendefinisikan variabel anda.
Saya menjalankan baris kode Anda dengan variabel yang didefinisikan sebagai bilangan bulat dan berhasil:
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
Saya tidak berpikir pernyataan With
sesuai dengan baris kode yang Anda bagikan, tetapi jika Anda menggunakannya, With
akan berada di awal baris yang mendefinisikan objek yang Anda manipulasi. Berikut ini adalah kode Anda yang ditulis ulang menggunakan pernyataan With
yang tidak perlu:
With Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData))
.ClearContents
End With
Pernyataan With
didesain untuk menyelamatkan Anda dari pengetikan ulang kode dan untuk membuat coding Anda lebih mudah dibaca. Ini menjadi berguna dan sesuai jika Anda melakukan lebih dari satu hal dengan sebuah objek. Sebagai contoh, jika anda ingin mengubah kolom menjadi merah dan menambahkan garis tepi hitam yang tebal, anda dapat menggunakan pernyataan With
seperti ini:
With Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData))
.ClearContents
.Interior.Color = vbRed
.BorderAround Color:=vbBlack, Weight:=xlThick
End With
Jika tidak, Anda harus mendeklarasikan range untuk setiap aksi atau properti, seperti ini:
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
Saya harap ini memberi Anda gambaran mengapa Gary's Student percaya bahwa kompiler mungkin mengharapkan With
(meskipun itu tidak pantas) dan bagaimana dan kapan With
dapat berguna dalam kode Anda.