Saya memiliki lembar kerja Excel yang memiliki tombol.
Saat saya memanggil fungsi usedRange (), rentang yang dikembalikannya termasuk bagian tombol.
Apakah ada cara agar saya bisa mendapatkan rentang yang digunakan sebenarnya yang berisi data?
Tombol seperti apa, baik Kontrol Formulir maupun kontrol ActiveX seharusnya tidak mempengaruhi rentang yang digunakan.
Ini adalah masalah yang diketahui bahwa excel tidak melacak rentang yang digunakan dengan baik. Referensi apa pun ke rentang yang digunakan melalui VBA akan mengatur ulang nilai ke rentang yang digunakan saat ini. Jadi coba jalankan sub prosedur ini:
Sub ResetUsedRng()
Application.ActiveSheet.UsedRange
End Sub
Jika gagal, Anda mungkin memiliki beberapa pemformatan yang menggantung. Coba hapus/hapus semua sel setelah baris terakhir Anda.
Mengenai hal di atas juga lihat:
Metode lain untuk menemukan sel yang terakhir digunakan:
Dim rLastCell As Range
Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)
Ubah arah pencarian untuk menemukan sel yang pertama kali digunakan.
Readify membuat jawaban yang sangat lengkap. Namun, saya ingin menambahkan pernyataan End
, Anda dapat menggunakannya:
Temukan sel terakhir yang digunakan, sebelum kosong di Kolom:
Sub LastCellBeforeBlankInColumn()
Range("A1").End(xldown).Select
End Sub
Menemukan sel yang terakhir digunakan dalam Kolom:
Sub LastCellInColumn()
Range("A" & Rows.Count).End(xlup).Select
End Sub
Menemukan sel terakhir, sebelum kosong dalam sebuah Baris:
Sub LastCellBeforeBlankInRow()
Range("A1").End(xlToRight).Select
End Sub
Menemukan sel yang terakhir digunakan dalam sebuah Baris:
Sub LastCellInRow()
Range("IV1").End(xlToLeft).Select
End Sub
Lihat di sini untuk informasi lebih lanjut (dan penjelasan mengapa xlCellTypeLastCell
tidak terlalu bisa diandalkan).
Public Sub FindTrueUsedRange(RowLast As Long, ColLast As Long)
Application.EnableEvents = False
Application.ScreenUpdating = False
RowLast = 0
ColLast = 0
ActiveSheet.UsedRange.Select
Cells(1, 1).Activate
Selection.End(xlDown).Select
Selection.End(xlDown).Select
On Error GoTo -1: On Error GoTo Quit
Cells.Find(What:="*", LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Activate
On Error GoTo -1: On Error GoTo 0
RowLast = Selection.Row
Cells(1, 1).Activate
Selection.End(xlToRight).Select
Selection.End(xlToRight).Select
Cells.Find(What:="*", LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Activate
ColLast = Selection.Column
Quit:
Application.ScreenUpdating = True
Application.EnableEvents = True
On Error GoTo -1: On Error GoTo 0
End Sub