首页 > 解决方案 > Excel执行宏后随机崩溃

问题描述

我正在把头发扯下来。

我正在尝试将用户表单文本框中的值添加到表格中。

但是,一旦 Excel 运行下面的代码,它就会不断地在我身上崩溃。

我得到的错误信息是

运行时错误-2147417848“对象'范围'的方法'值'失败

然后excel崩溃

我试过 Option explicit 来检查我没有丢失一个变量或者它被错误地声明了,我试过删除表并重新开始,我已经开始了一个新的工作簿,我已经更改了表名,我尝试了 4/5 不同的方法将数据添加到表中(简单范围偏移、databodyrange(X,1)、调整表大小等)。添加值时所有崩溃(顺便说一下,这只是像 mike/harry 等的文本)

工作簿有大约 10 个表格,它们都可以完美运行(它们将数据添加到表格等),正是这一个导致了问题

如果我手动将数据添加到表中,它会自动扩展并且没有问题

任何帮助表示赞赏。

Sub Enterprise_Update()
    Dim lst As ListObject
    Set lst = Sheets("Data Labels").ListObjects("Enterprises")


    For Each ctrl In Enterprise_Setup.Controls
        If ctrl.Name Like "Enterprise Name Value 1*" Then
            z = z + 1
        End If
    Next ctrl

    With lst.Sort
        .SortFields.Clear
        .Apply
    End With


    With lst
        LstRw = .ListRows.Count
    End With


    Select Case LstRw

    Case Is = 1

        lst.DataBodyRange(LstRw, 1).Offset(1, 0).Value = Enterprise_Setup.Controls("Enterprise Name Value 1" & x)

    Case Else

        For x = 1 To z

            sLookFor = CStr(Enterprise_Setup.Controls("Enterprise Name Value 1" & x))

            Set oLookin = lst.DataBodyRange
            Set oFound = oLookin.Find(what:=sLookFor, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)


            If Not oFound Is Nothing Then
                GoTo err:

            Else
                With lst
                    LstRw = .ListRows.Count
                End With
            End If

            r = Enterprise_Setup.Controls("Enterprise Name Value 1" & x).Value

            Sheets("Data Labels").Select
            Range(lst.Range.Cells(1).Address).End(xlDown).Offset(1, 0).Select
            ActiveCell.Value = r
            'lst.DataBodyRange(X).Value = r

        err:
            Next
    End Select
    With lst.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("Enterprises[Enterprises]"), Order:=xlAscending
        .Header = xlYes
        .Apply
    End With

End Sub

标签: excelvbaexcel-tables

解决方案


我用一种不太漂亮的方式解决了这个问题。我设法扩展了表格,并围绕空白行编写代码,即不计算空白、动态命名范围等


推荐阅读