Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2011, 19:25   #1
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию Выпадающий календарь - доработать под задачу

Есть очень хороший выпадающий календарь - хотелось бы его доработать под следующую задачу:
Календарь вводит дату и время в одну ячейку а надо чтоб вводил дату в одну ячейку а время во 2 ячейку справа - как в примере (прилагаю файл)
Например Дата в G:11 Время H:11 - Дата в G:12 Время H:12 и тд

При этом ввод времени в форме календаря переделать в виде выпадающего списка (поля и кнопки установки времени убрать) – для времени остается одно поле с выпадающим списком
Выпадающий список - с листа «Время» в приложенном файле.

Календарь нужно привязать к вводу только в диапазон G10:H500
Причем в столбец G вводим дату, в столбец H – время

Впоследствие путем сортировки на даты – а потом сортировки на время внутри даты получается план на день с утра
Вложения
Тип файла: rar Выбор даты и времени.rar (37.2 Кб, 81 просмотров)
Uralmaster вне форума Ответить с цитированием
Старый 05.02.2011, 20:17   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Вам уже ответили на Планете. Давайте поскромней. И хоть что-нибудь попытайтесь сделать сами. Эти форумы не авторешалка. Здесь помогают сделать что-то, а не делают все за Вас, по Вашему приказу.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 05.02.2011, 22:16   #3
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Открываете код формы календаря. находите вот это:
Код:
Private Sub Cmd_Select_Click()
    'Команда - закончить выбор даты и закрыть форму
'    SelectedDate = CStr(DateValue(dt_1))
    If sh = True Then ActiveCell = dt_1 Else ActiveCell = CStr(Format(DateValue(dt_1), "dd.mm.yyyy"))
'    Unload Me
End Sub
Пишете вместо выделенного красным, куда Вы хотите поместить дату.
С временем аналогично.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 05.02.2011 в 22:18.
VictorM вне форума Ответить с цитированием
Старый 06.02.2011, 04:46   #4
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

Да нет никаких приказов - я пытаюсь подробно расписать что надо чтоб 10 раз потом вопросы не задавать тк часто беспокоить Вас тоже не резон. Свою задачу на 70 проц решаю сам а вопросы задаю чтоб на этапах сильно не застревать вот и все Формулировки может неправильно написал и тон не понравился - ладно поменяем ...сорри А решения выкладываемые на Вашем форуме сильно помогают же не только мне но и всем участникам

Последний раз редактировалось Uralmaster; 06.02.2011 в 04:54.
Uralmaster вне форума Ответить с цитированием
Старый 08.02.2011, 03:19   #5
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию Реализовал задачу

Реализовал задачу
Файл во вложении
Только одна проблема осталась - календарь при запуске из ячейки диапазона дает старую дату а не сегодняшнюю
По кнопке макроса - дает сегодняшнюю дату

Как исправить ?



Что поправил (если кому интересно)

Привязка данных формы (списка) к диапазону ячеек

Вызываем форму встаем в окно на вкладке Categorized находим значение RowSourse
Делаем равным например =Этапы!C2:C28


Привязка вызова формы к диапазону ячеек

В лист вписать

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("G8:G80 1"), Target) Is Nothing Then
UserForm_Time.Show
End If
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("F8:F80 1"), Target) Is Nothing Then
Form_SelectDate.Show
End If
End Sub



Вставка времени из формы Time в смещеную вправо ячейку (в форму Календаря)

If sh = True Then ActiveCell = dt_1 Else ActiveCell = CStr(Format(DateValue(dt_1), "dd.mm.yyyy"))
Form_SelectDate.Hide
ActiveCell.Offset(0, 1).Select

Форматирование ячеек по форме - В форму Time вписать

Private Sub ComboBox1_Click()
'Private Sub CommandButton1_Click()
ComboBox1.Value = Format(ComboBox1.Value, "h:mm")
ActiveCell = ComboBox1.Value
Unload UserForm_Time
End Sub
Вложения
Тип файла: zip календарь в 2 ячейки v1.zip (55.9 Кб, 78 просмотров)

Последний раз редактировалось Uralmaster; 08.02.2011 в 03:26.
Uralmaster вне форума Ответить с цитированием
Старый 08.02.2011, 07:10   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("G8:G801"), Target) Is Nothing Then
UserForm_Time.Show
End If
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("F8:F801"), Target) Is Nothing Then
Call Календарь
End If
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 08.02.2011, 09:59   #7
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

Заработало благодарю за поддержку!!
Единственная мелочь - если ставлю календарь в место где есть дата то он сегодняшнюю не выводит - выводит старую .. если несложно где это поравить подскажите
Uralmaster вне форума Ответить с цитированием
Старый 08.02.2011, 10:57   #8
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Sub Календарь()
    On Error GoTo err1
'    If ActiveCell = "" Then
        dt_1 = Format(Now(), "dd.mm.yy") & " 8:00"
'    Else
'        dt_1 = ActiveCell
'    End If
    dt_3 = ActiveCell
    sh = False
    Form_SelectDate.Show
    If dt_1 = dt_3 Then Exit Sub
    '   Selection.Value = dt_1

    Exit Sub
err1:
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 08.02.2011, 11:07   #9
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

Работает железобетонно СЭНКС ...
Uralmaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выпадающий календарь для ввода дат mbrost Microsoft Office Excel 35 26.02.2018 13:29
Какой язык выбрать под задачу? E-ch Помощь студентам 6 13.11.2010 16:43
Выбор БД под определённую задачу vovk БД в Delphi 9 15.06.2009 21:35