我有两个用户表单,一个是我使用本指南创建https://sites.google.com/site/e90e50/calendar-control-class的日历,另一个是将选择begindate和enddate的日历。我试图将从frmCal中选择的日期放到userform1上的文本框中。这是我从userform1
调用的方式Private Sub txtBegin_Enter()
controlwithfocus = ActiveControl.Name
frmCalendar.Show
UserForm1.txtBegin.Value = Calendar1.Value
End Sub
哪个不起作用,它会抛出错误
需要对象
现在这个语法在后面的日历代码中,并且能够免费写入单元格问题。我的问题是我不想写入单元格,我想写入txtBegin或txtEnd,具体取决于哪个文本框"调用"要打开的表单日历。
Private Sub Calendar1_DblClick()
ActiveCell.Value = Calendar1.Value
Unload Me
End Sub
如何修改此项以便Calendar1.Value
写入"调用"文本框而不是工作表上的单元格?
编辑
我正在使用Excel 2013 64位版
答案 0 :(得分:1)
您正在卸载frmCalendar
,然后尝试从中读取值。您需要创建日历表单的非默认实例(使用New
)。然后,不要在Unload Me
中调用Calendar1_DblClick
,而是使用Me.Hide
将执行返回到调用代码:
在frmCalendar
:
Private Sub Calendar1_DblClick()
ActiveCell.Value = Calendar1.Value
Me.Hide
End Sub
在UserForm1
:
Private Sub txtBegin_Enter()
controlwithfocus = ActiveControl.Name
With New frmCalendar 'Create a new form instance
.Show
txtBegin.Value = .Calendar1.Value 'Form is hidden, but not unloaded.
End With 'Form unloads here.
End Sub