Страница: 1 | 2 |
Вопрос: Вопос по ComboBox
Добавлено: 23.03.08 13:04
Автор вопроса: Ig0r
Здраствуйте!Помогите,нужно сделать 3 Combobox'a с помощью ComboBox 1-список это число,2-список это месяц, 3- список это год!Можно ли заполнять ComboBox(например число) не с помощью AddItem "1" и т.д.,чтобы код был меньше?И как сделать чтобы там при запуске стояла текущая дата?
Ответы
Всего ответов: 20
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 23.03.08 13:30
кидаешь на форму три комбика: cboDay, cboMonth, cboYear
Dim i
Const SE = 1950
For i = 1 To 100
If i < 13 Then cboMonth.AddItem i
If i = Month(Date$) Then cboMonth.ListIndex = i - 1
If i < 32 Then cboDay.AddItem i
If i = Day(Date$) Then cboDay.ListIndex = i - 1
cboYear.AddItem i + SE
If i + SE = Year(Date$) Then cboYear.ListIndex = i - 1
Next
End Sub
Номер ответа: 2
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #2
Добавлено: 23.03.08 13:39
The following example swaps columns of a multicolumn ListBox. The sample uses the List property in two ways:
To access and exchange individual values in the ListBox. In this usage, List has subscripts to designate the row and column of a specified value.
To initially load the ListBox with values from an array. In this usage, List has no subscripts.
To use this example, copy this sample code to the Declarations portion of a form. Make sure that the form contains a ListBox named ListBox1 and a CommandButton named CommandButton1.
Dim MyArray(6, 3)
'Array containing column values for ListBox.
Private Sub UserForm_Initialize()
Dim i As Single
ListBox1.ColumnCount = 3
'This list box contains 3 data columns
'Load integer values MyArray
For i = 0 To 5
MyArray(i, 0) = i
MyArray(i, 1) = Rnd
MyArray(i, 2) = Rnd
Next i
'Load ListBox1
ListBox1.List() = MyArray
End Sub
Private Sub CommandButton1_Click()
' Exchange contents of columns 1 and 3
Dim i As Single
Dim Temp As Single
For i = 0 To 5
Temp = ListBox1.List(i, 0)
ListBox1.List(i, 0) = ListBox1.List(i, 2)
ListBox1.List(i, 2) = Temp
Next i
End Sub
Номер ответа: 3
Автор ответа:
Ig0r
Вопросов: 9
Ответов: 18
Профиль | | #3
Добавлено: 23.03.08 14:24
Код писать в UserForm - initialize
Номер ответа: 4
Автор ответа:
Ig0r
Вопросов: 9
Ответов: 18
Профиль | | #4
Добавлено: 23.03.08 14:29
Executioner - огромное спасибо!!!
Номер ответа: 5
Автор ответа:
Ig0r
Вопросов: 9
Ответов: 18
Профиль | | #5
Добавлено: 23.03.08 14:29
Executioner - огромное спасибо!!!
Номер ответа: 6
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #6
Добавлено: 23.03.08 15:06
Пример я привёл из MSDN именно по вопросу установки значений ComboBox'а "сразу" через свой массив и свойство .List()
Быстрее ли это обычным установкам — сильно сомневаюсь.
Номер ответа: 7
Автор ответа:
Ig0r
Вопросов: 9
Ответов: 18
Профиль | | #7
Добавлено: 23.03.08 17:58
А как сделать чтобы месяц отображался не 1,2,3 а Январь,Февраль и т.д.?
Номер ответа: 8
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #8
Добавлено: 24.03.08 00:46
Const SE = 1950
For i = 1 To 100
If i < 13 Then cboMonth.AddItem MonthName(i)
If i = Month(Date$) Then cboMonth.ListIndex = i - 1
If i < 32 Then cboDay.AddItem i
If i = Day(Date$) Then cboDay.ListIndex = i - 1
cboYear.AddItem i + SE
If i + SE = Year(Date$) Then cboYear.ListIndex = i - 1
Next
Номер ответа: 9
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #9
Добавлено: 24.03.08 02:31
мной применялся такой пример (100% рабочий)
Dim i As Byte
With ComboBox1 'часы
For i = 1 To 24
.AddItem i
Next i
.ListIndex = Hour(DateAdd("d", -1, Now)) - 1
End With
With ComboBox2 'дни месяца
For i = 1 To 31
.AddItem i
Next i
.ListIndex = Day(DateAdd("d", -1, Now)) - 1
End With
With ComboBox4 'года начиная с 2002-го года до текущего
For i = 2 To Year(DateAdd("d", -1, Now)) - 2000
.AddItem 2000 + i
Next i
.ListIndex = Year(DateAdd("d", -1, Now)) - 2002
End With
With ComboBox3
.list = Array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", _
"августа", "сентября", "октября", "ноября", "декабря"
.ListIndex = Month(DateAdd("d", -1, Now)) - 1
End With
End Sub
Номер ответа: 10
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #10
Добавлено: 24.03.08 11:29
night-roll, не великоват примерчик? Вроде, мой попроще будет
Номер ответа: 11
Автор ответа:
Ig0r
Вопросов: 9
Ответов: 18
Профиль | | #11
Добавлено: 25.03.08 17:17
Есть набор из 4 страниц(Multipage) можно ли сделать чтобы число, месяц и год(comboBox)(ихний код находился на 1 странице),а на всех остальных вкладках тоже чтобы отображались эти значения без повторения кода?
Номер ответа: 12
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #12
Добавлено: 26.03.08 00:49
Ну, как вариант - создать комбики не на контейнере мультипейдж, а на форме и отображать их поверх всех контролов.
Номер ответа: 13
Автор ответа:
Ig0r
Вопросов: 9
Ответов: 18
Профиль | | #13
Добавлено: 26.03.08 09:57
Как это сделать?
Номер ответа: 14
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #14
Добавлено: 26.03.08 10:38
2Executioner
короче, но не проще! мой код читабельнее! хотя это на вкус программера.
По отношению к твоему коду в моём нет зависимости от языковых и региональных настроек (название месяца)!
Номер ответа: 15
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #15
Добавлено: 26.03.08 10:47
2Ig0r
внесу поправку на ответ в топике №12.
на форме создать отдельный контейнер, туда кинуть эти "комбы", а КОНТЕЙНЕР поместить поверх "МУЛЬТИПЕЙДЖА". при необходимости можно показывать или скрывать!