获取日期选入用户表单文本框

时间:2016-11-23 14:23:38

标签: excel vba excel-vba calendar excel-2013

我有两个用户表单,一个是我使用本指南创建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位版

1 个答案:

答案 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