VBA误差法'_默认值';如果对象为';范围';插入表时失败
我正在处理一个链接到位于网络路径上的Excel工作簿的用户表单。在笔记本中,我有一个名为Source的表。此表包含ID和源名称。在UserForm中有一个按钮,用于将新源添加到表中。我目前的VBA如下所示:VBA误差法'_默认值';如果对象为';范围';插入表时失败,vba,excel,Vba,Excel,我正在处理一个链接到位于网络路径上的Excel工作簿的用户表单。在笔记本中,我有一个名为Source的表。此表包含ID和源名称。在UserForm中有一个按钮,用于将新源添加到表中。我目前的VBA如下所示: Private Sub bFinishAdd_Click() Dim wb As Workbook Dim ws As Worksheet Dim rng As Range Dim lr As Long Set wb = Workbooks.Ope
Private Sub bFinishAdd_Click()
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range
Dim lr As Long
Set wb = Workbooks.Open("\\datapath\datasub1\datasub2\filename.xlsx")
Set ws = wb.Worksheets("Source")
Set rng = ws.Range("Source[Source]")
If tbNewSourceName <> "" Then
If Application.WorksheetFunction.CountIf(rng, tbNewSourceName) > 0 Then
MsgBox "Source System already exists!"
lbSourceSystems.Enabled = True
bAddSource.Enabled = True
frameAddSource.Enabled = False
lblNewSourceName.Enabled = False
bFinishAdd.Enabled = False
bCancelAdd.Enabled = False
tbNewSourceName = ""
tbNewSourceName.Enabled = False
tbNewSourceName.BorderStyle = fmBorderStyleNone
Exit Sub
Else
lr = ws.Cells(Rows.Count, 1).End(xlUp).Row
ws.Cells(lr + 1, 1) = lr - 1 + 1000
ws.Cells(lr + 1, 2) = tbNewSourceName
End If
End If
End Sub
然而,我不明白为什么我会收到错误,或者如何修复它。有什么想法吗?显然,使用默认方法在某些地方出了问题。无法将文本框指定给单元格。所以要明确。尝试:
ws.Cells(lr + 1, 1).Value = lr - 1 + 1000
ws.Cells(lr + 1, 2).Value = tbNewSourceName.Text
我发现我试图添加到的同一个表在我的UserForm上作为列表框的行源列出。在添加行源代码之前,我更新了代码以删除行源代码,并在添加行源代码之后将其重新添加
lbSourceSystems.RowSource = ""
lr = ws.Cells(Rows.Count, 1).End(xlUp).Row
ws.Cells(lr + 1, 1).Value = lr - 1 + 1000
ws.Cells(lr + 1, 2).Value = tbNewSourceName.Text
lbSourceSystems.RowSource = ("'filename.xlsx'!SourceSystems")
谢谢这并没有纠正我的错误。然而,我确实找出了问题的原因。在我的UserForm中有一个列表框,它绑定到我添加到的表。通过在添加到表之前删除RowSource并在添加到表之后重新添加RowSource,可以修复此问题。
lbSourceSystems.RowSource = ""
lr = ws.Cells(Rows.Count, 1).End(xlUp).Row
ws.Cells(lr + 1, 1).Value = lr - 1 + 1000
ws.Cells(lr + 1, 2).Value = tbNewSourceName.Text
lbSourceSystems.RowSource = ("'filename.xlsx'!SourceSystems")