簡體   English   中英

Excel VBA - 清除最后使用的單元格的內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM