vba clear column to last used row?

时间:2017-01-16 10:05:01

标签: excel vba

我正在使用vba尝试清除第10行到最后一行的列。

我遇到的问题是我的一些价值观中存在差距:

1
2
3

5
6
7

8
9

这是我的代码:

Sub Clear2()
ActiveSheet.EnableCalculation = False
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False

With Sheets(1)
    .Range("H10:H" & .Range("H10").End(xlDown).Row).ClearContents
    .Range("I10:I" & .Range("I10").End(xlDown).Row).ClearContents
    .Range("J10:J" & .Range("J10").End(xlDown).Row).ClearContents
    .Range("K10:K" & .Range("K10").End(xlDown).Row).ClearContents
    .Range("L10:L" & .Range("L10").End(xlDown).Row).ClearContents
    .Range("M10:M" & .Range("M10").End(xlDown).Row).ClearContents


End With
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True
ActiveSheet.EnableCalculation = True
End Sub

我得到的问题是我的代码只清除到第一个空白行,然后就像这样清除任何内容:

5
6
7

8
9

有人可以告诉我这样做的正确方法吗?

2 个答案:

答案 0 :(得分:1)

With Sheets("mysheet") '<--| change "mysheet" to your actual sheet name
    Intersect(.Range(.Rows(10), .UsedRange.Rows(.UsedRange.Rows.Count)), .Range("H:M")).ClearContents
End With

它使用

  • Range(range1, range2)符号

    返回从rangerange1范围的range2

  • Range("Col1:Col2")符号

    返回从range列到Col1之间的Col2

  • UsedRange对象的Worksheet属性

    返回一个包含所有实际&#34;使用的矩形范围&#34; (即,不是空的或格式化的)单元格

这样:

  • .Range(.Rows(10), .UsedRange.Rows(.UsedRange.Rows.Count))

    从第10行获取所有单元格到最后#34;使用&#34;行

  • .Range("H:M")

    将H列中的所有单元格转换为M

  • 与上述两个范围相交,您可以获得想要的范围以清除

  • 的内容

答案 1 :(得分:0)

这应该有用。

Option Explicit

Sub Clear2()

    ActiveSheet.EnableCalculation = False
    Application.ScreenUpdating = False
    Application.DisplayStatusBar = False
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False

    With Sheets(1)

        .Range("H10:H" & .Cells(Rows.Count, "H").End(xlUp).Row).ClearContents
        .Range("I10:I" & .Cells(Rows.Count, "I").End(xlUp).Row).ClearContents
        .Range("J10:J" & .Cells(Rows.Count, "J").End(xlUp).Row).ClearContents
        .Range("K10:K" & .Cells(Rows.Count, "K").End(xlUp).Row).ClearContents
        .Range("L10:L" & .Cells(Rows.Count, "L").End(xlUp).Row).ClearContents
        .Range("M10:M" & .Cells(Rows.Count, "M").End(xlUp).Row).ClearContents

    End With
    Application.ScreenUpdating = True
    Application.DisplayStatusBar = True
    Application.EnableEvents = True
    ActiveSheet.EnableCalculation = True

End Sub