Здравствуйте. Подскажите, как правильно установить в комбобоксе текущий год из массива этого комбобокса. При запуске формы, в комбобоксе должен отобразиться текущий год с сохранением порядка дат(т.е. при вызове выпадающего списка после 2021 должен быть 2022 и т.д. )
Установка текущего года из массива в Combobox. VBA
21.09.2021 15:23:16
|
|
|
|
21.09.2021 15:42:19
Так?
|
|||
|
|
21.09.2021 15:51:51
ComboBox1.Value = Year(Now)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|
|
|
21.09.2021 16:16:21
Перебрали даты, определили, что в них 2 (3, 5... неважно) разных года. Каким будет ListIndex?
|
|
|
|
21.09.2021 16:29:45
vikttur в ComboBox1.ListIndex должно быть 11. 11 - позиция в массиве 2021 года в примере. Мне не понятно, как сравнить при переборе номер позиции с текущим годом.
Изменено: |
|
|
|
21.09.2021 16:54:15
Если нужно показать в ComboBox текущий год, зачем ListIndex? |
|||
|
|
22.09.2021 08:37:58
vikttur Чтобы найти в массиве дату текущего года и отправить в ListIndex номер его позиции. Нужен вариант именно с ListIndex.
Попробовал сделать так:
Выдает ошибку 9 subscript out of range. Полагаю это из-за неверного обращения к массиву внутри комбобокса arr(i, 1). Как это возможно исправить?
Изменено: |
|||
|
|
22.09.2021 08:40:37
Hashtag, после 3й строки поставьте break point и посмотрите что у Вас в массиве - какой он размерности. Если одномерный, то Вы неверно обращаетесь к элементу массива.
|
|
|
|
22.09.2021 09:00:52
Изменено:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|||
|
|
22.09.2021 09:11:24
Ігор Гончаренко В вашем варианте в комбобоксе устанавливается текущий год 2021, но при раскрытии списка комбобокса следующий год идет 2010.
|
|
|
|
22.09.2021 09:23:57
замените
ComboBox1 = y на ComboBox1.ListIndex = 11 только причем здесь
понимаете, я очень примитивно устроен, я научился читать то, что написано, но не умею читать мысли, поэтому читаю "как установить текущий год?", пишу как его установить, а потом оказывается нужно совсем не это....
Изменено:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|||
|
|
22.09.2021 11:25:22
Я вот тоже никак не могу понять автора...
Текущий год известен. Так зачем искать какие-то даты?! Для чего они, если ИЗВЕСТНОЕ число (год) можно найти в списке и без них? |
|
|
|
22.09.2021 11:34:01
Здравствуйте, если правильно понял.
Изменено:
Вредить легко, помогать трудно.
|
|
|
|
23.09.2021 21:28:05
Ещё раз перечитайте сообщение 13 и ответьте на простой вопрос - дата зачем?
|
|
|
|
23.09.2021 22:10:36
Может я не так выразился, под датами подразумевались года в массиве. В любом случае вопрос закрыт.
|
|
|
|
23.09.2021 22:56:28
Год - не дата, это целое число - достаточно переменной Long Int(i) - зачем. если счетчик и без этого - целое число? Если процедура в модуле формы, то правильнее Private Sub
А это зачем при инициализации формы? Решение может быть таким:
А может, и не надо искать текущий год, а весь список с него начинать?
|
|||||||||
|
|
23.09.2021 22:59:35
11 в моем варианте, это индекс ТЕКУЩЕГО года в массиве годов листбокса
(11 до текущего, текущий, и 9 после текущего) это будет работать в этом году, в следующем и в 2051 году это тоже будет работать там будет массив 2040, 2041,2042... 2051, 2052,... 2060. и в 2051-м году индекс текущего, (2051 года) в сформированном моим макросом списке будет 11-м, как и в любом другом году - текущий год имеет индекс 11.
Изменено:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|
|
|
23.09.2021 23:39:53
|
|||||
|
|
24.09.2021 18:19:17
vikttur, спасибо за наставление, обязательно это учту. w = .Width, забыл удалить, остался от другого кода. Понравилось ваше решение через With.
Ігор Гончаренко, разобрался с вашим кодом, спасибо, все работает. |
||||
|
|
|||