2011-08-01 47 views
0

我一直在試圖寫一些代碼複製和插入excel表上的數據。這一過程的一部分涉及到查找三張紙的每一張的最後一行或倒數第二行。但是在找到第一張紙的最後一行後,激活第二張紙後,程序不斷給我一個錯誤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 

而且標註變量時,你應該標註這樣的:

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

在你的原單代碼,你只有尺寸的最後一個變量,STARTROW和lastrow2將變異的數據類型不長。

+0

對不起,我昨天晚上雖然試圖編輯我的帖子,但我的網絡連接中斷了。它現在應該更有意義。如果合適的話,不要忘記將你的解決方案標記爲答案,否則人們會忽視幫助你。 – Reafidy

0

如果有連續的數據,你可以使用CurrentRegion,或者如果你知道你有數據一路向下例如Col A,然後使用

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

找到最後一行。

相關問題