【问题标题】:Run-time error 1004 when refreshing tables刷新表时出现运行时错误 1004
【发布时间】:2020-04-27 23:10:38
【问题描述】:

我得到了

运行时错误“1004”应用程序定义或对象定义

每次我点击“全部刷新”时都会出错。当我点击 Debug 时,突出显示以下代码行。

Set FoundOrder = wsSale.Range("A:A").Find(What:=orderNum)

程序执行没有错误。唯一出现错误的情况是刷新表格以获取 UpToDate 信息。

这是我的代码。它是为“邮件”表上组合框的 onChange 事件编写的。

Private Sub CustName3_Change()

Dim wsOrderD As Worksheet: Set wsOrderD = Sheets("OrderDetails")
Dim wsSale As Worksheet: Set wsSale = Sheets("Sales")
Dim wsCust As Worksheet: Set wsCust = Sheets("CusTO")
Dim wsMail As Worksheet: Set wsMail = Sheets("Mailing")
Dim regEx As New RegExp
Dim orderNum As String: orderNum = CustName3.text

With regEx
    .Pattern = "^[0-9 ]+$"
End With

Dim FoundOrder As Range: Set FoundOrder = wsSale.Range("A:A").Find(What:=orderNum)

If FoundOrder Is Nothing Then
    MsgBox ("Order#" & orderNum & " Not Found")
    CustName3.text = ""
    Exit Sub
End If

wsMail.Range("AK10").Value = orderNum

If orderNum = "" Then
    wsMail.Range("v8:v15").Value = ""
    wsMail.Range("x3:af3").Value = "".
Else
    If regEx.test(orderNum) Then
        Dim custId As Long: custId = wsSale.Range("A:A").Find(What:=orderNum).Row
        custId = wsSale.Cells(custId, "C")

        Dim FoundCell As Long: FoundCell = wsCust.Range("A:A").Find(What:=custId).Row
        Dim RowToFind As String: RowToFind = FoundCell

        wsMail.Range("v8").Value = "¤Ø³ " & wsCust.Cells(RowToFind, "B")
        wsMail.Range("v9").Value = wsCust.Cells(RowToFind, "C")
        wsMail.Range("v10").Value = wsCust.Cells(RowToFind, "D")
        wsMail.Range("v11").Value = wsCust.Cells(RowToFind, "E")
        wsMail.Range("v12").Value = wsCust.Cells(RowToFind, "F")
        wsMail.Range("v13").Value = "ÃËÑÊä»ÃɳÕÂì   " & wsCust.Cells(RowToFind, "G")
        wsMail.Range("v14").Value = "â·Ã  " & wsCust.Cells(RowToFind, "H")
        wsMail.Range("v15").Value = "â·Ã  " & wsCust.Cells(RowToFind, "I")
    Else
        MsgBox ("Please type in 'Numbers' only!")
        CustName3.text = ""
        wsMail.Range("AK10").Value = ""
        Exit Sub
    End If
End If

End Sub

【问题讨论】:

  • 抱歉,我现在已经编辑了帖子。
  • 这段代码放在哪里?
  • 此代码用于我在 onChange 事件的“邮件”表上的组合框。
  • 在该行放置一个断点。当您刷新时,似乎 onchange 正在触发。组合框是否从表中选取值?
  • 是的,组合框从“CusTO”表中读取值。

标签: excel vba


【解决方案1】:

到目前为止,运行时错误 1004 的最常见原因是 VBA 代码引用了不存在的命名范围。也许代码中的名称拼写错误。或者可能使用了无效的名称。

CustName3.text

我认为这没有定义

【讨论】:

  • 感谢您帮助 Erjon! CustName3.Text 是指在“邮件”表上的组合框中选择的值。
  • 你必须发布整个代码,但是运行时错误 1004 意味着你有一些未定义的东西
  • 那甚至不在有错误的那一行。请不要猜测答案。改为使用评论来澄清问题。
  • 他的行有orderNum,调试显示这行orderNUm中的行原因被称为:P
  • CustName3 未定义。尝试用虚拟字符串替换它,例如“Foo”。你会得到同样的错误吗????
【解决方案2】:

我最终通过使用enableevents=false 解决了这个问题。该程序似乎在刷新时被执行。我还必须在所有连接上禁用后台刷新。非常感谢 Siddharth Rout!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2015-01-26
    • 1970-01-01
    相关资源
    最近更新 更多