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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2010, 11:10   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию Открыть календарь, на фиксированную дату

Здравствуйте.
Подскажите, как открыть календарь на первое число первого месяца, года ячейки R1?
Вложения
Тип файла: rar kalendar.rar (34.4 Кб, 30 просмотров)
segail вне форума Ответить с цитированием
Старый 21.08.2010, 12:04   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Замените

Код:
Private Sub CommandButton1_Click()
    Get_Date Now
End Sub
на

Код:
Private Sub CommandButton1_Click()
    Get_Date DateSerial([r1], 1, 1)
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 21.08.2010, 13:13   #3
alebed
Пользователь
 
Аватар для alebed
 
Регистрация: 26.05.2010
Сообщений: 77
По умолчанию Предложение

уважаемый (я) segail
возможно это связано со спецификой проекта над которым вы работаете, но использование такого большого кол-ва лейб для работы с временем или датой на мой взгляд не целесообразно.
Предлагаю Вам рассмотреть варианты с использованием объектов
MonthView
Date Time Picker
Calendar
Прим: добавлены в форму
Вложения
Тип файла: zip kalendar.zip (32.3 Кб, 27 просмотров)
Спасибо и Пасибы принимаются на WebMoney в американских Z143254902288 или русских R388611339241 монетах
alebed вне форума Ответить с цитированием
Старый 21.08.2010, 13:26   #4
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Если выполнить код фиксированной даты, то открытие календаря другими кнопками происходит с фиксированной датой, а не с текущей…
Как это исправить?
Код:
Public Условие As Integer

Private Sub CommandButton6_Click() 
        Условие = 1  'Приход
        Get_Date (Now)
End Sub

Private Sub CommandButton3_Click()
        If TextBox2.Value = "" Then
            Условие = 3  'Инвентаризация. Удаление данных
            Get_Date (Now)
         Else
            Условие = 2  'Инвентаризация. Ввод данных
            Get_Date (Now)
         End If
End Sub

Private Sub CommandButton11_Click()
    Условие = 4  'Остаток
    Get_Date DateSerial((Sheets("Отчет").[R1]), 1, 1)
End Sub
Хотя в тестовом примере, все работает нормально. Может с “Условием” не правильно работает?
Вложения
Тип файла: rar kalendar.rar (36.6 Кб, 19 просмотров)

Последний раз редактировалось segail; 21.08.2010 в 13:32.
segail вне форума Ответить с цитированием
Старый 21.08.2010, 13:43   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Если выполнить код фиксированной даты, то открытие календаря другими кнопками происходит с фиксированной датой, а не с текущей…
А зачем вообще открывать календарь?
Просто, чтобы показать, что он есть?

Вообще, функция Get_Date предназначена для получения выбранной пользователем даты, а не просто для запуска формы с календарём...

Использовать её можно так:

НоваяДата = Get_Date ( СтартоваяДата, ЗапаснаяСтартоваяДата_НаСлучайЕслиО сновнаяСтартоваяДатаНеУказана)

На вашем примере:

Код:
Private Sub CommandButton6_Click()
    Условие = 1  'Приход
    ДатаПрихода = Get_Date(Now)
End Sub

Private Sub CommandButton3_Click()
    Условие = IIf(TextBox2.Value = "", 3, 2)
    ДатаИнвентаризации = Get_Date(DateSerial((Sheets("Отчет").[R1]), 1, 1), Now)
End Sub

Private Sub CommandButton11_Click()
    Условие = 4  'Остаток
    ДатаОстатка = Get_Date(DateSerial((Sheets("Отчет").[R1]), 1, 1))
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 21.08.2010, 14:02   #6
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А зачем вообще открывать календарь?
Просто, чтобы показать, что он есть?
Для последующих выполнений кодов связанных с датами, непосредственно с календаря.
Код:
Private Sub Cmd_Select_Click()
    If Условие = 1 Then
        '...
    End If

    If Условие = 2 Then
        '...
    End If
    
    'Команда - закончить выбор даты и закрыть форму
    SelectedDate = CStr(DateValue(dt_1))
    Unload Me
End Sub
segail вне форума Ответить с цитированием
Старый 21.08.2010, 14:22   #7
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

То есть выполнить нужный код с календаря, отталкиваясь от той кнопки, которой он был открыт.
Во всех случаях календарь должен открываться с текущей датой, только в одном случае он открывается с датой Get_Date(DateSerial((Sheets("Отчет" ).[R1]), 1, 1)).
Как таковой последовательности открытия календаря кнопками нету.

Последний раз редактировалось segail; 21.08.2010 в 16:19.
segail вне форума Ответить с цитированием
Старый 22.08.2010, 17:51   #8
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Здравствуйте.
Пошел другим путем.
Изменил код при Initialize формы Form_SelectDate
Код:
        If Условие = 4 Then
            dt_1 = DateSerial(Sheets("Отчет").[R1], 1, 1) 'Фиксированная дата
        Else
            dt_1 = Now 'Текущая дата
        End If
        dt_2 = dt_1
При открытии календаря с других форм
Код:
Private Sub CommandButton11_Click() 'ОСТАТОК открытие календаря с фиксированной датой.
    '...
    Условие = 4  'Остаток
    Get_Date (Now)
    '...
End Sub
отображается фиксированная дата, при открытие календаря
Код:
Private Sub CommandButton6_Click()'ПРИХОД открытие календаря с текущей датой.
    '... Код
        If a = 0 Then
            Условие = 1  'Приход
            Get_Date (Now)
            ElseIf a = b Then
            Условие = 1  'Приход
            Get_Date (Now)
        Else
            '... Код
        End If
End Sub
и
Код:
Private Sub CommandButton3_Click() 'ИНВЕНТАРИЗАЦИЯ открытие календаря с текущей датой.
    Dim i As Integer
    For i = 1 To 444
        If a = "Итого" Or b = "" Then
            MsgBox
            Exit Sub
        End If
        If i = a Then
            If i = 1 And c = "" Then
                MsgBox
                Exit Sub
            End If
        End If
            Условие = IIf(TextBox2.Value = "", 3, 2) 'Инвентаризация
            Get_Date (Now)
            '... Код
    Next
End Sub
Необходимо открыть форму календаря несколько раз, чтобы получить текущую дату. То есть если календарь был открыт изначально с фиксированной датой и наоборот.
Что где подправить(в модули, в коде календаря или в кодах открытия), чтобы не ловить нужную дату повторным открытием календаря?

Последний раз редактировалось segail; 22.08.2010 в 17:57.
segail вне форума Ответить с цитированием
Старый 22.08.2010, 19:26   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Необходимо открыть форму календаря несколько раз, чтобы получить текущую дату.
Ничего не понял...

Одно могу сказать - не надо было вообще лазить в коде календаря.
Тогда всё было бы на порядок проще...

Использовали бы вы только функцию Get_Date в таком виде: ДатаПрихода = Get_Date(Now)
А проверку условий реализовали бы внутри своего кода (например, через Select Case)

Цитата:
Что где подправить(в модули, в коде календаря или в кодах открытия), чтобы не ловить нужную дату повторным открытием календаря?
Чтобы получить нужную дату, используйте функцию Get_Date, которая возвращает выбранную дату.
Надо получить одну дату - вызывайте функцию один раз.
И никаких повторных открытий календаря не будет.
EducatedFool вне форума Ответить с цитированием
Старый 22.08.2010, 20:01   #10
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Ничего не понял...
В смысле я открываю календарь с “Фиксированной датой”
Затем в календаре я выполняю нужный код кликом по кнопке Cmd_Select_Click или произвожу отмену кликом по кнопке Cmd_Cancel_Click форма календаря закрывается, на этом все. Затем я открываю календарь другой кнопкой, где открытие должно происходить с “Текущей датой”, но открытие календаря происходит с “Фиксированной датой”, приходится закрыть календарь, или самому установить текущую дату, только при повторном открытие календаря той же кнопкой (например кнопкой приход) дата становится текущей. И наоборот (все что описал ваше), если изначально календарь был открыт с “Текущей датой”.
Цитата:
Одно могу сказать - не надо было вообще лазить в коде календаря.
Тогда всё было бы на порядок проще...
Да нет в календаре я не чего не напортачил, я просто пытаюсь добиться того что мне надо, если не получается то код календаря восстанавливаю, что бы конкретно не уйти в дебри и запутаться…
segail вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КАЛЕНДАРЬ В С++ ange11o Общие вопросы C/C++ 0 02.06.2010 14:18
календарь mineralkaaa Помощь студентам 6 20.05.2010 13:21
Календарь seriousMalish JavaScript, Ajax 2 12.05.2010 05:01
Как нарисовать фиксированную таблицу в Экселе? Sirius2w Microsoft Office Excel 6 11.12.2009 16:13