在Excel VBA中清除特定的一组列

我似乎无法得到正确的语法。 我想写一个VBA脚本来清除第4行的列A到H,直到列中的最后一个单元格。 我知道我可以写

Sheets("BAC").Rows(4 & ":" & Sheets("BAC").Rows.Count).ClearContents Sheets("JPM").Rows(4 & ":" & Sheets("JPM").Rows.Count).ClearContents Sheets("CITI").Rows(4 & ":" & Sheets("CITI").Rows.Count).ClearContents 

清除行,但如何改变这只适用于列A到H,而不是所有的列?

使用

 Sheets("BAC").Range("A4:H" & Sheets("BAC").UsedRange.Rows.Count).ClearContents Sheets("JPM").Range("A4:H" & Sheets("JPM").UsedRange.Rows.Count).ClearContents Sheets("CITI").Range("A4:H" & Sheets("CITI").UsedRange.Rows.Count).ClearContents 

这将为你做。

 Sub clearRowsAtoH() Dim i As Integer For i = 1 To 8 Sheets("BAC").range(Sheets("BAC").Cells(4, i), Sheets("BAC").Cells(Rows.count, i).End(xlUp)).ClearContents Sheets("JPM").range(Sheets("JPM").Cells(4, i), Sheets("JPM").Cells(Rows.count, i).End(xlUp)).ClearContents Sheets("CITI").range(Sheets("CITI").Cells(4, i), Sheets("CITI").Cells(Rows.count, i).End(xlUp)).ClearContents Next i End Sub 

编辑:它可以更清洁使用“与”的陈述。

 Sub clearRowsAtoH() Dim i As Integer For i = 1 To 8 With Sheets("BAC") .range(.Cells(4, i), .Cells(Rows.count, i).End(xlUp)).ClearContents End With With Sheets("JPM") .range(.Cells(4, i), .Cells(Rows.count, i).End(xlUp)).ClearContents End With With Sheets("CITI") .range(.Cells(4, i), .Cells(Rows.count, i).End(xlUp)).ClearContents End With Next i End Sub 

试试这个,例如

 With Sheets("BAC") .Range("A4:H" & .Range("A4").End(xlDown).Row).ClearContents End With 

如果您的书中有多个工作表,请尝试以下操作:

 Sub clear_rows() Dim Wks As String Dim i As Integer Dim last_cell As Long Application.ScreenUpdating = False For Each Worksheet In Worksheets ' loop through all worksheets Wks = Worksheet.Name 'get the name of the sheet as a string If Wks = "BAC" Or Wks = "JPM" Or Wks = "CITI" Then 'check the string against your list (could use array or modify to fit your application) Worksheets(Wks).Activate For i = 1 To 8 'loop through all columns you want a=1,h=8 and so on last_cell = Worksheets(Wks).Cells(Rows.Count, i).End(xlUp).Row 'get the last used cell in the column i If Not last_cell < 4 Then Worksheets(Wks).Range(Cells(4, i), Cells(last_cell, i)).Clear 'clear it if the column has more than 3 cells Next End If Next Application.ScreenUpdating = True End Sub 

修改以适应您的口味!