2011-07-26 34 views
1

我想寫一個代碼,刪除工作表上第三個和最後一個數據行之間的所有行。我有一些簡短的代碼行首先查找包含數據的最後一行,並返回該行號。從它減去1。並選擇從第3行到第2行到最後一行的數據範圍並嘗試刪除它們。但每次運行此代碼時都會遇到錯誤。有什麼建議麼?選擇要在Excel 2007中刪除的行的範圍。運行時錯誤1004?

Sheets("Sheet1").Activate 
lastrow = (Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp).Row) - 1 
Range("3: lastrow").Select 'Error 1004: method range of object _global failed 
Selection.Delete Shift:=xlUp 

回答

0

使用範圍的SpecialCells屬性:

Range("A3:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address).Select 

這將選擇塊,直到最後使用的電池。

編輯: 將其納入你的程序,以獲得倒數第二,做最後一個單元格的一些字符串操作。

Dim str, str1, str2, add As String 
Dim index, num As Integer 
str = Range("A1").SpecialCells(xlCellTypeLastCell).Address 'returns say $j$20 

index = InStr(2, str, "$") 'find the second dollar sign 

str1 = Left(str, index)  'gets the string "$j$" 
str2 = Mid(str, index + 1) 'get the string "20" 

num = CInt(str2) 'convert "20" to 20 
num = num - 1 
add = str1 & CStr(num) 'reattach to form "$j$19" 

Range("A3:" & add).Select 
+0

感謝。我需要排在最後一行上方的那一行,我該如何指定它。對不起,我是vba新手 – jerryh91

+0

是的,我正在重讀你的問題。讓我解決它。 – jonsca

+0

@jerry應該這樣做。 – jonsca

相關問題