Excel VBA:运行时错误(对象“范围”的方法“值”失败),但仅在连续运行时

杰丁

我目前正在处理的VBA项目存在问题,特别是运行时错误,并带有一段代码,该代码在表底部查找下一个空单元格并将存储的字符串写入该范围

现在-对该项目的简要说明。我在Excel工作表中有一张表格,其中记录了我工作的公司可能会提出的每项预期工作。为此,我有一个前端,该前端具有用于创建/查看新“作业”或“机会”的控件,并且在此处运行的代码对信息进行了某种意义上的检查,在网络驱动器上为联系人创建了标准化的文件夹结构和合同信息,并为该工作生成一个唯一的ID,然后将其用于我们的CRM和通讯

仪表板

运行的代码似乎第一次没有问题(ADD NEW JOB)->(CREATE),但是在第二次运行时崩溃,它将抛出运行时错误'-2147417848(80010108)':方法'Value对象“ Range”的“”失败。在行:

r.Value = pFix

和Excel(在Windows 10上为2016)将崩溃并重新启动

编辑:我相信这可能是因为r第二轮运行时未正确存储-或第一轮之后未从内存中正确清除。但是我已经尝试过了Set r = Nothing,在这里我读到的内容仍然表明这不应该成为问题

此代码来自UserForm frmNewJob(屏幕抓取中显示的输入表单)Button_Click事件

Private Sub CommandButton1_Click()
    Dim pFix As String
    Dim sNew As Long
    Dim jNumber As String
    Dim jName As String
    Dim jIndex As String
    Dim jClient As String
    Dim jSite As String
    Dim jComments As String
    Dim cName As String
    Dim createdDate As Date
    Dim r As Range
    Dim hLink As String
    Dim hLink2 As String
    Dim wDir As String
    Dim msg As String
    Dim ans As String

    Set r = Nothing


    wDir = ActiveWorkbook.Path

    If TextBox1.Value = "" Then
        Call MsgBox("Please enter a valid Requester Name", vbCritical)
        Exit Sub
    Else

        If TextBox2.Value = "" Then
            Call MsgBox("Please enter a valid Client Name", vbCritical)
            Exit Sub
        Else

            If TextBox3.Value = "" Then
                Call MsgBox("Please enter a valid Site Description", vbCritical)
                Exit Sub
            Else

            End If
        End If
    End If

    pFix = "GSM"
    sNew = WorksheetFunction.Max(Columns(2)) + 1
    jNumber = pFix & sNew
    jClient = TextBox2.Value
    jIndex = Left(jClient, 1)
    jSite = TextBox3.Value
    jName = jClient & " - " & jSite
    jComments = TextBox4.Value
    cName = TextBox1.Value
    createdDate = Now


    Set r = Sheet1.Range("A" & Rows.Count).End(xlUp).Offset(1)

    r.Value = pFix
    r.Offset(0, 1) = sNew
    r.Offset(0, 2) = jNumber
    r.Offset(0, 3) = jName
    r.Offset(0, 4) = jComments
    r.Offset(0, 5) = createdDate
    r.Offset(0, 6) = cName

    Call MsgBox("New Job Number is: " & jNumber, vbOKOnly)

    On Error Resume Next
    hLink = wDir & "\" & jIndex
    MkDir hLink

    hLink = hLink & "\" & jNumber & " - " & jName
    MkDir hLink

    hLink2 = hLink & "\" & "1. Tender Documents"
    MkDir hLink2

    hLink2 = hLink & "\" & "2. Clarifications and Addendums"
    MkDir hLink2

    hLink2 = hLink & "\" & "3. Client Correspondence and MoU's"
    MkDir hLink2

    hLink2 = hLink & "\" & "4. Technical Queries"
    MkDir hLink2

    hLink2 = hLink & "\" & "5. Document Register"
    MkDir hLink2

    hLink2 = hLink & "\" & "6. Subcontractor and Material Pricing"
    MkDir hLink2

    hLink2 = hLink & "\" & "7. Estimate"
    MkDir hLink2

    hLink2 = hLink & "\" & "8. Photos"
    MkDir hLink2

    hLink2 = hLink & "\" & "9. Tender Submission"
    MkDir hLink2

    hLink2 = hLink & "\" & "10. Drawings"
    MkDir hLink2

    hLink2 = hLink & "\" & "11. Post Tender Correspondence"
    MkDir hLink2



    Unload Me

    'Call filterByJobNumber
    Call copyTable

    msg = "Would you like to open the newly created directory?"
    ans = MsgBox(msg, vbYesNo, "Open Directory?")

    If ans = vbYes Then
        Shell "explorer """ & hLink & "", vbNormalFocus
    Else
    End If


End Sub

它使Excel崩溃而不仅仅是中断并让我调试的事实是让我感到困惑的事实-它不会失败会在第一次运行但在第二次崩溃会崩溃

编辑:我将其范围缩小到了一行r.Value = pFix,这是将存储的pFix字符串写入新范围的点rmsgbox(pFix)在此行之前弹出,表明pFix存储了正确的字符串,因此错误必须在范围内

也许有些新鲜的眼睛会发现我忽略的错误-了解原因会阻止以后再发生

编辑2:

我进行了进一步的测试,当将值写入range时,问题肯定在代码运行的第二个实例上发生r我创建了一个小测试来强制崩溃,在下面的代码中Excel将锁定并在第二个循环中退出-仅当r每次连续运行之间更改地址(行数增加)和创建的新行位于表格的底部(Excel会自动将此新行添加到表格范围)有人可以运行代码并确认他们是否存在相同的问题吗?

Sub testMacro()

    Dim r As Range
    Dim str As String

    str = "TEST"
    i = 1

    Do Until i = 5
        Set r = Sheet1.Range("A" & Rows.Count).End(xlUp).Offset(1)
        Call MsgBox(r.Address, vbOKOnly, "Range address for 'r' is")
        r = str
        i = i + 1
    Loop


End Sub

我尝试卸载/重新安装和修复Office 2016安装作为一项附加措施,但没有帮助。如果Windows 10不可在其他地方重复使用,那可能是一个怪癖吗?

杰丁

回答为“社区Wiki”,从未回答的问题列表中删除,并且在我不更改代码的情况下就已将其解决。

看来Office 2016 / Excel 2016安装存在一些潜在问题。在进一步的测试中,我确实产生了VBA“内存不足”错误,但是在这种特殊情况下,对代码的更改似乎没有产生任何积极影响。

再次删除,重新启动和重新安装Office(第2次)似乎已解决了该问题,而无需对工作簿进行任何其他更改,并且原始Sub在运行时不会产生错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel VBA运行时错误:对象“内部”的方法“颜色”失败

来自分类Dev

Excel VBA运行时错误1004

来自分类Dev

Excel VBA,Http.ResponseText运行时错误91

来自分类Dev

读取图表标签值运行时错误(Excel VBA)

来自分类Dev

Excel VBA运行时错误'-2147319767(80028029)'

来自分类Dev

运行时错误462使用Excel访问VBA

来自分类Dev

VBA Excel做While循环运行时错误

来自分类Dev

VBA Excel-Access 3251运行时错误

来自分类Dev

Excel VBA运行时错误“ 70”:权限被拒绝

来自分类Dev

Excel VBA Vlookup运行时错误1004

来自分类Dev

Excel VBA运行时错误1004

来自分类Dev

运行时错误13 VBA Excel 2007

来自分类Dev

Excel VBA-运行时错误1004

来自分类Dev

Excel VBA,Http.ResponseText运行时错误91

来自分类Dev

Excel VBA shoDataForm运行时错误'1004'Worksheet类的ShowDataForm方法失败

来自分类Dev

运行时错误70权限被拒绝Excel VBA

来自分类Dev

VBA Excel做While循环运行时错误

来自分类Dev

运行时错误91- Excel VBA

来自分类Dev

Excel VBA:运行时错误424,需要对象

来自分类Dev

Excel VBA:运行时错误(对象“范围”的方法“值”失败),但仅在连续运行时

来自分类Dev

VBA运行时错误1004:尝试在Excel 2013中创建表时,对象_Global的方法范围失败

来自分类Dev

Excel VBA查找函数获取运行时错误1004

来自分类Dev

Excel VBA运行时错误类型不匹配13

来自分类Dev

运行时错误13 VBA Excel

来自分类Dev

Excel VBA:.find函数返回运行时错误91

来自分类Dev

运行时错误“424” - Excel 中的 VBA

来自分类Dev

VBA Excel 错误运行时错误“53”

来自分类Dev

带有 .quit 的 vba excel 运行时错误 438

来自分类Dev

需要运行时错误“424”对象:Excel VBA

Related 相关文章

热门标签

归档