2016-04-20 53 views
0

我有一些代碼檢查用戶窗體中的數據在組合框中。然後如果找到的話在表格中添加一行。不幸的是,我發現有些時候它不會添加行,只是覆蓋行。關於我做錯了什麼的想法會有所幫助。以下是部分創建新行的代碼:Excel-VBA Listrow.add沒有插入行

If Not vbNullString = Me.CrimeSN2.Value Then 
    If Not vbNullString = Me.RowNumber.Value Then 
     rownumval = Me.RowNumber.Value 
     Worksheets("Offense").ListObjects("OffenseTable").ListRows.Add (rownumval) 
     rownumval = rownumval + 1 
    Else 
     rownumval = LastRow + 1 
     Worksheets("Offense").ListObjects("OffenseTable").ListRows.Add (rownumval) 
     rownumval = rownumval + 1 
end if 
+0

提供進一步的保護,防止具有非數字是否只是簡單地覆蓋你的表的最後一行?它是在你的代碼的'If'還是'Else'部分,或者兩者都發生?當您使用F8瀏覽代碼時,LastRow是否正確? –

+0

您檢查單元格值('Me.RowNumber.Value')是否爲空,但它可能不是數字。如果它不是數字,.Add將會失敗。 – OldUgly

+0

感謝Doug和OldUgly的迴應,回覆您的詢問。它覆蓋在rownumval + 1的位置。我遍歷了代碼,它只覆蓋了「If」部分。和LastRow是正確的。我已經穿過它,它讀取rownumval作爲一個長期和有價值。它似乎不適用於'.ListRows.Add(rownumval)'。對於醜陋的'Me.RowNumber.Value'來說,它的閱讀時間長且有價值。我確實嘗試了您提供的代碼,但仍然繼續出現錯誤。 – fatboyzfishing

回答

0

這將在rownumval

If Not vbNullString = Me.CrimeSN2.Value Then 
    If Not vbNullString = Me.RowNumber.Value And IsNumeric(Me.RowNumber.Value) Then 
     rownumval = Me.RowNumber.Value 
     Worksheets("Offense").ListObjects("OffenseTable").ListRows.Add (rownumval) 
     rownumval = rownumval + 1 
    Else 
     rownumval = LastRow + 1 
     Worksheets("Offense").ListObjects("OffenseTable").ListRows.Add (rownumval) 
     rownumval = rownumval + 1 
end if