我尝试根据我的要求创建工作簿。第一张纸包括一个类型为' 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方法的第一行。
我已经尝试了我所想的一切。但一切都没有发生。帮我。谢谢。
答案 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
放在工作表模块中。