excel - 将第二个数据条目添加到 Excel 表中时,对象“范围”的 VBA 错误方法“_Default”失败
问题描述
我正在尝试创建一个用户表单来跟踪工作申请。一旦用户填写文本框并单击保存,它将数据从文本框传输到名为“数据库”的 Excel 表。以下代码是我Sub Save
在 Save_CmdBt_Click 事件中运行的。当我输入我的第一个数据记录并单击保存时,一切正常 - 没有错误。但是,当我输入第二个数据记录时,我得到对象“范围”的方法“_默认”失败错误。.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 - 删除图像。每次保存/删除调用后都会更新列表框中的错误。
编辑 4(问题的解决方案)
有关 ListBox1 的 If 和 Else 语句是错误的原因。本质上,我想要一个动态 ListBox 并且最初的条件仅适用于表中的第二行(即标题和第一行)。因此,在第二条记录/数据之后,ListBox 不会更新,因为它由于设置条件而无法更新,从而导致Method '_default' of Object 'Range' failed' 错误。
解决方案
确保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
推荐阅读
- node.js - Vue Nuxt 应用程序的 cpanel 服务器上的 Npm 安装不起作用?
- c# - c#中的颜色范围轨迹栏?
- python - AttributeError:“列表”对象在 Python 中没有属性“值”
- java - apache tomcat在java中创建sqlite数据库的新实例
- arrays - 角度过滤:清除搜索框时出现问题
- python - 如何在 PyGame、Python 中制作弹力球
- makefile - 创建拖曳文件的 jom/nmake 规则
- c++ - 转换向量
其中包含 /0 到 char* 而不会丢失数据? - java - 是否需要在 netbeans IDE 中明确添加 java 包?
- javascript - 两个 Bootstrap-image-carousel 不工作