为简化电子表格的使用,并避免有人随心所欲地添加或删除行(并弄乱了公式),我使用了一系列用户表单。第一个用户窗体为用户提供了“取消”,“删除行”或“插入行”的选项。选择“取消”将卸载表格,选择“删除行”将卸载原始表格并显示另一个用户表格-这使用户可以选择要删除的行号,然后按“确定”将其删除。这一切都很好。
我遇到的问题是“插入行”按钮-这应该卸载第一个用户表单并显示另一个用户表单。这个新的“插入行”用户窗体允许用户输入行号,之后将插入新行。用户可以选择在将填充新的空行的各种文本框和组合框中输入更多详细信息-其中包括开始日期和结束日期。
我在手动选择日期时遇到整数和字符串问题,因此我选择了另外两种用户形式,从开始和结束日期打开,这给出了日历(选择所需的日期,按OK并将日期插入“插入行”用户表单的相关文本框中)。我一直对它们进行了测试,以消除皱纹,而且一切似乎都有效。
然后我从电子表格上的命令按钮打开了第一个用户窗体,
选择“取消”和“删除行”以检查它们是否仍然有效,然后选择“插入行”并得到“运行时错误'1004'应用程序定义的错误或对象定义的错误”。当我去调试时,它突出显示了这一行: userform1.show
我唯一想到的可能是一个问题(也是我所做的唯一重要更改)是两个日历,它们引用了userform1。我进行了多次搜索,但没有发现任何看起来像我的问题的东西-我只是不知道使用多层用户表单会带来什么问题。我通过进一步解释包括了一些代码:
Private Sub InsertRowButton_Click()
'unload the first userform when the user selects "Insert Row"
Unload ModifyProjectUserForm1
''This line highlights as the problem
UserForm1.Show
End Sub
'''the following subs are embedded in "UserForm1" (the one to Insert Row), allowing the user to select a date:
Private Sub InsertRowNumberStartDateCommandButton_Click()
frmCalendar1.Show
End Sub
Private Sub InsertRowNumberEndDateCommandButton_Click()
frmCalendar2.Show
End Sub
'''The following are the subs used to take the dates and place them in "UserForm1":
Private Sub StartDateCalendarOK_Click()
On Error Resume Next
UserForm1.InsertRowNumberStartDateTextBox.Value = frmCalendar1.Calendar1.Value
Unload frmCalendar1
End Sub
Private Sub EndDateCalendarOK_Click()
On Error Resume Next
UserForm1.InsertRowNumberEndDateTextBox.Value = frmCalendar2.Calendar2.Value
Unload frmCalendar2
End Sub
我希望打开“插入行”用户窗体,使我可以在其中插入新行以及相关的数据和日期。我得到的是一个运行时错误,我完全不知所措。
我不知道我是否完全走错了路线,但是我讨厌发布我的整个代码,因为其中有很多!
有人可以帮忙吗?