2015-12-27 65 views
0

我使用這個代碼http://ccm.net/faq/14494-vba-last-non-empty-row-all-versionsVBA:發現最後一排失敗,錯誤91

Function lastRow(sheet As Worksheet) As Long 

lastRow = sheet.Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row 

End Function 

它的工作原理,如果表中包含的東西。如果它是空的或有內容,則會失敗,並顯示錯誤91(對象變量或未設置塊變量)。

爲什麼?

+3

因爲沒有找到它失敗.... –

回答

5

考慮:

Function lastRow(sheet As Worksheet) As Variant 
    Dim r As Range, lr As Long 
    Set r = sheet.Columns(1).Find("*", , , , xlByColumns, xlPrevious) 
    If r Is Nothing Then 
     lastRow = "Nothing in column" 
    Else 
     lastRow = r.Row 
    End If 
End Function 
+0

這是更好,因爲如果使用'xlByRows',而不是''xlByColumns'搜索xlByColumns'推移列,爲例如,如果你在'[A10]'和'[B9]'中有值,那麼使用'xlByColumns'的'find'會返回9行而不是10個。所以'xlByColumns'最好在你試圖找到最後一列,而不是行。當然,由於使用'Columns(1)'範圍,你的代碼將返回正確的數字,但在使用'Cells.'的情況下,你可能會遇到問題。 – Vasily