运行时错误' 28':Excel VBA中的堆栈空间不足

时间:2015-06-16 09:04:54

标签: excel vba excel-vba

我尝试根据我的要求创建工作簿。第一张纸包括一个类型为' Text'它是DATE值。

我在打开工作簿时添加了Workbook_Open方法,用于设置今天日期,如下所示。

Private Sub Workbook_Open()
     Sheet1.Range("F6") = Date
End Sub

我还为该单元格的工作表添加了Worksheet_Change方法。这是用于验证检查,如下所示。

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$F$6" Then

        'Getting insertion date.
        insertionDate = Sheet1.Range("F6")

        'If date field is not empty
        If insertionDate <> "" Then

            Call MsgBox("Insertion Date must be inserted.")

        End If

    End If

End Sub

之后,我测试了我的代码。打开工作簿时,我收到以下错误。

Run-time error '28': 
Out of stack space

点击&#39;调试&#39;按钮,光标显示在Worksheet_Change方法的第一行。

我已经尝试了我所想的一切。但一切都没有发生。帮我。谢谢。

3 个答案:

答案 0 :(得分:1)

我用这段代码得到了它。我不满意,但问题解决了。

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False

    If Target.Address = "$F$6" Then

        'Getting insertion date.
        insertionDate = Sheet1.Range("F6")

        'If date field is not empty
        If insertionDate <> "" Then

            Call MsgBox("Insertion Date must be inserted.")

        End If

    End If

    Application.EnableEvents = True

End Sub

答案 1 :(得分:0)

Msgbox不需要Call声明。尝试删除Call并再次测试。 我从https://support.microsoft.com/en-us/kb/126090?wa=wsignin1.0得到了一些参考。它可以解释你的错误。

答案 2 :(得分:0)

代码中标记的可能错误来源

Option Explicit   ' Candidate

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$F$6" Then

        'Getting insertion date.
        Dim insertionDate as String   ' Candidate
        insertionDate = Sheet1.Range("F6").Text   ' Candidate

        'If date field is not empty
        If insertionDate <> "" Then
            MsgBox("Insertion Date must be inserted.")   ' Candidate
        End If

    End If
End Sub

确保将Worksheet_Change放在工作表模块中。