2016-08-12 47 views
0

我似乎無法得到正確的語法。我想編寫一個VBA腳本來清除第4行的列A到H,直到列中的最後一個單元格。我知道我可以寫在Excel中清除特定的一組列VBA

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 

清除行了,但我要如何改變這種只到H適用於列A,而不是所有的列?

回答

1

使用

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 
2

這會爲你做它。

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 
+0

這是一個更好的解決方案,因爲它只清除每列中實際使用的所有單元。 –

1

試試這個,例如

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

如果你有你的書多個工作表試試這個:

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 

修改以適合你的口味!