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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2010, 18:17   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию Заполнение ComboBox датами

Здравствуйте
Подскажите как сделать что бы при выборе значения месяца в ComboBox4
например “январь” и так.д, в ComboBox3 формировались даты данного месяца а последняя строка имела текст “м-ц” или “м-ц” уже вписан, а формируются только даты. За основу года для формирования дат, бралось значение года ячейки R1 Листа “Отчет”
segail вне форума Ответить с цитированием
Старый 12.01.2010, 19:14   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Хоть бы файл выложили... вроде, не первый день на форуме.

А то на написание кода уйдёт 1 минута, а на создание файла с формой - гораздо больше.
EducatedFool вне форума Ответить с цитированием
Старый 12.01.2010, 19:45   #3
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Пример ....................
Вложения
Тип файла: rar dat.rar (10.3 Кб, 31 просмотров)
segail вне форума Ответить с цитированием
Старый 12.01.2010, 20:02   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Так надо было?



Вот весь код:

Код:
Private Sub ComboBox4_Change()
    Me.ComboBox3.Clear
    If Not IsDate("1 " & Me.ComboBox4) Then Exit Sub
    m = Month(CDate("1 " & Me.ComboBox4)): y = Val([Отчет!R1])
    For i = 1 To 31
        newdate = DateSerial(y, m, i)
        If Month(newdate) = m Then Me.ComboBox3.AddItem Format(newdate, "D MMMM YYYY г.")
    Next
    On Error Resume Next: Me.ComboBox3.ListIndex = 0
End Sub


Private Sub UserForm_Initialize()
    Me.ComboBox4.Clear: Me.ComboBox3.Clear
    ComboBox4.AddItem "январь": ComboBox4.AddItem "февраль": ComboBox4.AddItem "март"
    ComboBox4.AddItem "апрель": ComboBox4.AddItem "май": ComboBox4.AddItem "июнь"
    ComboBox4.AddItem "июль": ComboBox4.AddItem "август": ComboBox4.AddItem "сентябрь"
    ComboBox4.AddItem "октябрь": ComboBox4.AddItem "ноябрь": ComboBox4.AddItem "декабрь"
    ComboBox4.AddItem "Итого": Me.ComboBox4.ListIndex = 0
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 12.01.2010, 20:20   #5
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Не совсем так, год берется за основу для определения количества дат, потому что есть високосные года, а вводятся только даты (числовые значения 01 02 итд в конце должно еще быть "м-ц").
Еще если можно, то при выборе значения “Итого” ComboBox4, то в ComboBox3 отражалось только одно числовое значение ячейки R1 “Отчет”
segail вне форума Ответить с цитированием
Старый 12.01.2010, 20:27   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Неужто так сложно изменить пару строк в коде?



Код:
Private Sub ComboBox4_Change()
    Me.ComboBox3.Clear
    If Not IsDate("1 " & Me.ComboBox4) Then
        Me.ComboBox3.AddItem [Отчет!R1]
        Me.ComboBox3.ListIndex = 0: Exit Sub
    End If
    m = Month(CDate("1 " & Me.ComboBox4)): y = Val([Отчет!R1])
    For i = 1 To 31
        newdate = DateSerial(y, m, i)
        If Month(newdate) = m Then Me.ComboBox3.AddItem Format(newdate, "DD")
    Next
    Me.ComboBox3.AddItem "м-ц": Me.ComboBox3.ListIndex = 0
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 12.01.2010, 20:37   #7
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Не хочу портить подчерк профессионала
segail вне форума Ответить с цитированием
Старый 12.01.2010, 20:52   #8
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

То что надо
Дайте пожалуйста определение моим действиям.
Если я Ваш код перемещу с UserForm_Initialize в UserForm_Activate
segail вне форума Ответить с цитированием
Старый 12.01.2010, 21:17   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Дайте пожалуйста определение моим действиям.
Если я Ваш код перемещу с UserForm_Initialize в UserForm_Activate
Событие Initialize срабатывает один раз - при загрузке формы.
Если её потом не выгружать из памяти (Unload Userform1), а просто скрывать (Userform1.Hide), то при повторном отображении формы событие Initialize не генерируется.

Событие Activate срабатывает и при отображении ранее скрытой формы.

Если форма отображена в немодальном режиме (фокус можно переводить с листа на форму, и обратно), то событие Activate будет срабатывать каждый раз при получении формой фокуса ввода.

PS: Нафига Вам всё это? Работает, да и ладно... Зачем перемещать код?
EducatedFool вне форума Ответить с цитированием
Старый 12.01.2010, 21:47   #10
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Я заплутал с Initialize и с Activate. У меня есть коды которые прописаны как в Initialize так и в Activate. Потомучто были моменты когда не загружались данные. Вот например данный код куда вставить?
Код:
Private Sub UserForm_Activate()
    Caption = Sheets("Отчет").Range("N1") & " " & Sheets("Отчет").Range("R1")
    TextBox3.Text = Sheets("Отчет").Range("N1")
End Sub
На данный момент он у меня стоит в Activate и работает.
segail вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с датами Jadovi Microsoft Office Access 25 26.11.2009 12:02
РАбота с датами KNatalia Microsoft Office Excel 3 29.09.2009 14:28
При onselect на combobox вып-ие Query1 и Query2, и заполнение Edit Абдуллаев Рустам БД в Delphi 3 08.05.2009 14:59
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45