[英]Excel VBA - clear content to the last used cell
Worksheets("happy").Unprotect
Range("C4").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Range("C4:BB100").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
我想清除從C4
到最后使用的不斷變化的單元格的范圍。 有人有什么主意嗎?
這是我的嘗試。
Sub del_range()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("happy")
'ws.Range(Cells(4, 3), Cells(ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row, ws.UsedRange.SpecialCells(xlCellTypeLastCell).Column)).Select
ws.Range(Cells(4, 3), Cells(ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row, ws.UsedRange.SpecialCells(xlCellTypeLastCell).Column)).ClearContents
End Sub
注釋行將只是 select 它,但我建議不要這樣做,因為 select 需要時間。 它查看此工作表中的最后一個值在哪一行,最后一個值在哪一列,並刪除從單元格 C4 到最后一行和單元格的所有內容。
Option Explicit
Sub clearHappy()
With ThisWorkbook.Worksheets("happy")
'.Unprotect
With .Range("C4")
Dim rg As Range:
Set rg = .Resize(.Worksheet.Rows.Count - .Row + 1, _
.Worksheet.Columns.Count - .Column + 1)
'Debug.Print rg.Address
Dim cel As Range
Set cel = rg.Find("*", , xlFormulas, , xlByRows, xlPrevious)
If Not cel Is Nothing Then
'Debug.Print cel.Address
Set rg = rg.Resize(cel.Row - .Row + 1, _
rg.Find("*", , , , xlByColumns, xlPrevious).Column _
- .Column + 1)
'Debug.Print rg.Address
rg.ClearContents
End If
End With
'.Protect
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.