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

我正在处理一个链接到位于网络路径上的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.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")