2011-08-01 17 views
0

私はexcel上のシート間にデータをコピーして挿入するコードを書くことを試みてきました。このプロセスの一部には、3つのシートのそれぞれの最後の行または最後から2番目の行を見つけることが含まれます。しかし、最初のシートの最後の行を見つけた後、2番目のシートをアクティブにした後、プログラムはエラー13:タイプミスマッチエラーを表示し続けます。私はこの問題をどのように解決すればよいですか?最後の行を3枚の別々のシートで見つける。 VBA Excel 2007

Sub DeleteRow() 

Dim StartRow, Lastrow2, NuRow As Long 
StartRow = 3 
Dim LastColumn As Long 
Dim LastRow As Long 
Dim LastCell As Long 

Sheets("Sheet1").Activate 
    'Search for any entry, by searching backwards by Rows. 

LastRow = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

NuRow = LastRow - 1 
Range(StartRow & ":" & NuRow).Select 
Rows(StartRow & ":" & NuRow).Delete 

Sheets("Sheet2").Activate 
LastRow = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
Range(1 & ":" & LastRow).Select 
Selection.Copy 

Sheets("Sheet1").Select 
Selection.Insert Shift:=xlDown 



    'Delete first two and last lines 

Range("A1").Select 
Rows("1:2").Delete 
Range("A65536").End(xlUp).EntireRow.Delete Shift:=xlUp 

Sheets("Sheet2").Activate 
'Error 13: Type Mismatch -->Lastrow2 = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

答えて

2

以下は私があなたがしようとしていることの解釈に基づくコードです。あなたが本当にすべきではない時間の99.9%とそれらを扱うために細胞を選択する必要はありません。あなたはこのように寸法を記入すべき変数の寸法を決める際に

Dim StartRow As Long 

StartRow = 3 

With Sheets("Sheet1") 
    LastRow = .Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
    .Rows(StartRow & ":" & LastRow - 1).Delete 
End With 

With Sheets("Sheet2") 
    LastRow = .Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

    .Rows(1).Resize(LastRow).Copy 
    .Rows(1).Resize(LastRow).Insert Shift:=xlDown 

    .Rows("1:2").Delete 

    .Range("A" & Rows.Count).End(xlUp).EntireRow.Delete Shift:=xlUp 
End With 

また:あなたのorginalコードで

Dim StartRow as long, Lastrow2 as long, NuRow As Long 

あなただけの最後の変数を寸法しているとして、startRow属性とlastrow2はバリアントデータ型長くはないだろう。

+0

申し訳ありません私の投稿を編集しようとしていますが、私は最後の夜の途中でインターネット接続を失った。今はもっと意味をなさないはずです。あなたの解決策の1つを適切な答えにすることを忘れないでください。さもなければ、人々はあなたを怠るでしょう。 – Reafidy

0

連続したデータがある場合は、CurrentRegionを使用できます。 Col Aを使用し、最後の行を見つけるには

lrow = Range("A65000").end(xlup).row 

を使用してください。

関連する問題