2011-07-26 8 views
1

ワークシート上の3番目と最後のデータ行の間のすべての行を削除するコードを記述しようとしています。私は最初にデータを含む最後の行を探して、その行番号を返すいくつかの短い行のコードを持っています。 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

関連する問題