Я работаю над своим первым проектом VBA, и я действительно застрял.
На моем листе Excel мне нужен Date Picker.В используемой версии Excel ее нет, поэтому я создал собственный календарь, используя код по ссылке ниже (созданной L42, с 42 метками и т. Д.):
ФорматированиеММ / ДД / ГГГГ даты в текстовом поле в VBA
Календарь выглядит так же, как на изображении, так что пока все хорошо.
введите описание изображения здесь
В свою электронную таблицу Excel я добавил код, который заставляет календарь всплывать только в двух ячейках, E2 и F2, которые представляют дату начала и дату окончания для моих данных.
Private Sub worksheet_selectionchange(ByVal target As Range)
If Not Application.Intersect(Range("E2"), target) Is Nothing Then
MyCalendar.Show
End If
If Not Application.Intersect(Range("F2"), target) Is Nothing Then
MyCalendar.Show
End If
End Sub
Все работает нормально, календарь появляется только при нажатии только на эти две ячейки.Итак, когда я нажимаю на E2, календарь всплывает, я выбираю дату, затем появляется окно сообщения с выбранной датой, я нажимаю кнопку ОК, чтобы закрыть его, затем я закрываю календарь, но дата, на которую я нажал, не будетбыть вставленным в мою ячейку E2.
Полагаю, мне нужен код в процедуре select_label, приведенной ниже, в которой дата, на которую я нажимаю в календаре, и всплывающее окно в MsgBox фактически заполняют мои ячейки Excel E2 или F2.
Private Sub select_label(msForm_C As MSForms.Control)
'/* Capture the selected date */
Dim i As Integer, sel_date As Date
i = Split(msForm_C.Name, "_")(1) - 1
sel_date = FirstCalSun(curMonth) + i
'/* Transfer the date where you want it to go */
MsgBox sel_date
End Sub
Любая помощь очень ценится.
Спасибо.