当我开始新的分离时,我想删除特定工作表之间的旧数据。 (在Green& Red之间)。不幸的是,我收到此错误消息,无法弄清楚我做错了什么。
“错误1004 Range类的删除方法失败”
请帮忙! 感谢。
'-----------------------------
Sub Test()
'-----------------------------
Dim ws As Worksheet
Dim lRow As Long, lCol As Long
Dim Rng As Range
Dim beginIdx As Integer, endIdx As Integer
'-- Get the 'Green' and 'Red' indexses in the active workbook .
beginIdx = ActiveWorkbook.Sheets("Green").Index + 1
endIdx = ActiveWorkbook.Sheets("Red").Index - 1
'-- Delete old data between 'Green' and 'Red' tabs
For J = beginIdx To endIdx
'-- Set this to the relevant worksheet
Set ws = ActiveWorkbook.Sheets(J)
With ws
'-- Get the last row and last column
lRow = .UsedRange.SpecialCells(xlCellTypeLastCell).row
lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
'-- Set the sheet range to delete old data leaving the headings intact
Set Rng = .Range(.Cells(2, 1), .Cells(lRow, lCol))
Application.DisplayAlerts = False ' Get rid of pop-up message
With Rng
'-- Now delete the old data from the sheet
.EntireRow.Delete
End With
Application.DisplayAlerts = True ' Back to normal
End With
Next J
End Sub
答案 0 :(得分:1)
现在这个工作。我只需要包括:
*如果要检查lRow值的语句是> 2
*从2 - >增加范围单元格值; 3(设置Rng = .Range(.Cells(3,1)...)
'-----------------------------
Sub Test()
'-----------------------------
Dim ws As Worksheet
Dim lRow As Long, lCol As Long
Dim Rng As Range
Dim beginIdx As Integer, endIdx As Integer
'-- Get the 'Green' and 'Red' indexses in the active workbook .
beginIdx = ActiveWorkbook.Sheets("Green").Index + 1
endIdx = ActiveWorkbook.Sheets("Red").Index - 1
'-- Delete old data between 'Green' and 'Red' tabs
For J = beginIdx To endIdx
'-- Set this to the relevant worksheet
Set ws = ActiveWorkbook.Sheets(J)
With ws
'-- Get the last row and last column
lRow = .UsedRange.SpecialCells(xlCellTypeLastCell).row
lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
'-- Set the sheet range to delete old data leaving the headings intact
If lRow > 2 Then
Set Rng = .Range(.Cells(3, 1), .Cells(lRow, lCol))
Application.DisplayAlerts = False ' Get rid of pop-up message
With Rng
'-- Now delete the old data from the sheet
.EntireRow.Delete
End With
End If
Application.DisplayAlerts = True ' Back to normal
End With
Next J
End Sub