2016-11-23 3 views
0

У меня есть две пользовательские формы, одна из которых - это календарь, в котором я использовал это руководство, о том, как создать 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 записи в «вызывающее» текстовом поле, а не ячейки на листе?

EDIT
И я использую Excel 2013 64 Bit Edition

+0

, что линия ошибка брошена? –

+0

, вам может потребоваться объявить переменную даты, которая передается как общедоступная. Его трудно сказать, хотя и не видя слишком много. –

+1

Может быть, вам нужно ссылаться на форму, в которой включен элемент управления календарем? ie frmCalendar.Calendar1.Value –

ответ

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 
+0

Я получаю ошибку компиляции метода или члена данных, не найденного на .Calendar1 Если я удалю "." Я получаю ошибку отладки «Обязательный объект» –

+0

@StarsFlyFreeFromCozyNights - Сделать «Calendar1» общедоступным, а не частным. – Comintern

+0

Calendar1 = Новый cCalendar (синтаксис ссылки, которую я опубликовал, чтобы я установил это) –

Смежные вопросы