Hapus konten sel dalam VBA menggunakan referensi kolom

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?

Larutan

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

Komentar (0)

Seperti yang disebutkan oleh Siswa Gary&#39, 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.

Komentar (1)

Anda memerlukan pernyataan With sebelum ini. Atau buat .Cells menjadi Cells

Komentar (1)