将第二个数据条目添加到Excel表时,对象'Range'的VBA错误方法'_Default'失败



我正在尝试创建一个UserForm来跟踪Job应用程序。一旦用户填写文本框并单击保存,它就会将数据从文本框传输到名为"的excel表;数据库";。下面的代码是我的Sub Save,它在Save_CmdBt_Click事件中运行。当我输入我的第一个数据记录并单击保存时,一切都很好——没有错误。但是,当我输入第二个数据记录时,我得到对象"Range"的方法"_Default"失败错误。调试时,它在代码中的.Cells(iRow, 1) = iRow - 5行失败。

Dim sh As Worksheet
Dim iRow As Long

Set sh = ThisWorkbook.Sheets("Database")                'actual database sheet

If UserFormV2.RowNumber_Textbox.Value = "" Then         'when I debug for 2nd record
iRow = [Counta(Database!A:A)] + 1                   'this line of code was executed, thus, txtbox value was "" for sure
Else
iRow = UserFormV2.RowNumber_Textbox.Value           'set to "" unless user selects one entry from listbox
End If

With sh
'.Activate
.Cells(iRow, 1) = iRow - 5 '-5 because that is first available row after Table header. 
' The above code adds record number (1,2,3...) in excel table. 
'.Cells(iRow, 3) = UserFormV2.CompanyName_TextBox1.Value ... my extra code

End With

我已经检查了以下帖子(如果对象';范围';在插入表时失败,则VBA错误方法';_Default';(,但当错误触发时,我没有任何文本框。有什么想法或建议我如何解决这个问题吗?


编辑2-添加Excel工作表的图像以及工作和非工作子保存方法之间的比较。


编辑3-删除图像。错误出现在Listbox中,它在每次保存/删除调用后都会更新。


编辑4(问题解决方案(

关于ListBox1的If和Else语句是导致错误的原因。从本质上讲,我想要一个动态的ListBox,并且最初的条件只适用于表中的第二行(即标题和第一行(。因此,在第二条记录/数据之后,ListBox将不会更新,因为它由于设置的条件而无法更新,从而导致对象"范围"的方法"_default"失败错误。

确保iRow是有效的数字

Private Sub CommandButton1_Click()
Dim sh As Worksheet, iRow As Long
Set sh = ThisWorkbook.Sheets("Database") 'actual database sheet

If IsNumeric(RowNumber_TextBox.Value) Then iRow = RowNumber_TextBox.Value
If iRow < 1 Then
iRow = sh.Cells(Rows.Count, "A").End(xlUp).Row + 1
End If

End Sub

编辑-IsNumeric添加

最新更新