Excel 堆栈外空间运行时间:1004错误 Private子工作表\u更改(ByVal目标作为范围) 工作表(“订单表格”)。单元格(39,2)=环境(“用户名”) '当用户输入超过1000个案例时,弹出警告 如果Target.Column=7且(Target.Row13),则 如果单元格(Target.Row、Target.Column)>1000,则MsgBox“您订购的箱子超过1000箱”,vbCritical 如果结束 端接头

Excel 堆栈外空间运行时间:1004错误 Private子工作表\u更改(ByVal目标作为范围) 工作表(“订单表格”)。单元格(39,2)=环境(“用户名”) '当用户输入超过1000个案例时,弹出警告 如果Target.Column=7且(Target.Row13),则 如果单元格(Target.Row、Target.Column)>1000,则MsgBox“您订购的箱子超过1000箱”,vbCritical 如果结束 端接头,excel,vba,Excel,Vba,这会导致堆栈外空间错误(运行时错误1004) 这通常发生在我试图编辑任何单元格时 有人知道为什么吗 谢谢 看看这篇文章。它说,如果数组中的一个单元格包含超过911个字符(多随机数),这是一个常见问题。我看到你的可以容纳1000个。该链接包含一个解决方案,希望能帮助您。干杯 当您在工作表更改事件中启动工作表更改时,第一行将您置于一个无休止的循环中。试试这个: Private Sub Worksheet_Change(ByVal Target As Range) Worksheets("O

这会导致堆栈外空间错误(运行时错误1004)

这通常发生在我试图编辑任何单元格时

有人知道为什么吗


谢谢

看看这篇文章。它说,如果数组中的一个单元格包含超过911个字符(多随机数),这是一个常见问题。我看到你的可以容纳1000个。该链接包含一个解决方案,希望能帮助您。干杯


当您在工作表更改事件中启动工作表更改时,第一行将您置于一个无休止的循环中。试试这个:

Private Sub Worksheet_Change(ByVal Target As Range)
     Worksheets("Order_Form").Cells(39, 2) = Environ("USERNAME")

    ' Pop up a warning when the user input more than 1000 cases
    If Target.Column = 7 And (Target.Row < 34 And Target.Row > 13) Then
        If Cells(Target.Row, Target.Column) > 1000 Then MsgBox "You are ordering more than 1000 cases", vbCritical
    End If

End Sub
Private子工作表\u更改(ByVal目标作为范围)
关于错误转到错误处理程序
Application.EnableEvents=False
工作表(“订单表格”)。单元格(39,2)=环境(“用户名”)
Application.EnableEvents=True
'当用户输入超过1000个案例时,弹出警告
如果Target.Column=7且(Target.Row<34且Target.Row>13),则
如果单元格(Target.Row、Target.Column)>1000,则MsgBox“您订购的箱子超过1000箱”,vbCritical
如果结束
错误处理程序:
Application.EnableEvents=True
端接头

感谢您的回复,但这已禁用工作表上的宏?您应该搜索Application.EnableEvents和工作表\u Change事件。你会看到许多与你类似的问题。简单的回答是,它不会禁用宏,它会关闭事件并防止您陷入无休止的工作表更改循环。如果代码在设置为TRUE之前停止,则可能会出现问题。我将对其进行编辑以使其更安全。我已通过将代码添加到工作表_open中解决了此问题,但非常感谢您的帮助,非常感谢!因为我只想在它打开时将单元格设置为用户名一次,我很高兴你能弄明白。我要指出的是,你最初的问题是为什么会出现1004错误。我似乎回答了这个问题,并根据你所展示的内容给了你一个解决方案。如果是这样的话,请考虑点击我旁边的复选标记来接受我的答案。
Private Sub Worksheet_Change(ByVal Target As Range)
     On Error GoTo err_handler
     Application.EnableEvents = False
     Worksheets("Order_Form").Cells(39, 2) = Environ("USERNAME")
     Application.EnableEvents = True

    ' Pop up a warning when the user input more than 1000 cases
    If Target.Column = 7 And (Target.Row < 34 And Target.Row > 13) Then
        If Cells(Target.Row, Target.Column) > 1000 Then MsgBox "You are ordering more than 1000 cases", vbCritical
    End If
err_handler:
Application.EnableEvents = True

End Sub