2016-05-31 5 views
1

(сузили с моего широкого вопроса на enter link description here, как советовал in meta.)Установка значение UserForm Combobox

У меня есть UserForm. В этой пользовательской форме представлены несколько списков для выбора год, месяц и день. В дневном поле со списком заполняются номера до 28, 29, 30 или 31 в зависимости от того, какой год и месяц выбраны. Чтобы избежать выбора таких вещей, как 31 февраля, я хотел бы проверить, превышает ли выбранное значение дня за этот месяц, и соответствующим образом уменьшить его. На данный момент я попробовал эти варианты:

If Me.Combo_Day.Value > iMaxDate And iMonthNo > 0 And Not Me.Combo_Day.Value = "" Then Me.Combo_Day.Value = Me.Combo_Day.List(iMaxDate - 1) 

и

If Me.Combo_Day.Value > iMaxDate And iMonthNo > 0 And Not Me.Combo_Day.Value = "" Then Me.Combo_Day.Value = iMaxDate 

Ни один из них работают; в любое время, когда строка анализируется, я получаю ошибку 380 с объяснением «Не удалось установить свойство Value. Недопустимое значение свойства».

Я попытался изменить оба .Text и .Value, и ни один из них не имеет большого значения. Как изменить выбранное значение в поле со списком?

ответ

1

правку из-за непонимания Reqs:

Моя вина, я не понял оригинальный пост. Если дни установлены в числовом порядке, вы действительно можете использовать ListIndex (просто помните, что он начинается с нуля, поэтому вам придется вычесть 1). Это будет выглядеть так:

Me.Combo_Day.ListIndex = (iMaxDate - 1)

ли это работает?

+0

Спасибо, но проверка хорошо работает. Он не комбинируется с датой на этом этапе, поэтому он просто проверяет «.Value» of the day combobox против максимального значения, указанного для этого месяца. Проблема возникает, когда я пытаюсь * установить * выделенное значение combobox на самое высокое значение, доступное в этом месяце. У меня были большие надежды, что я могу использовать индекс списка, но безрезультатно. Есть предположения? –

+1

@AndrewPerry Моя ошибка, я неправильно понял исходное сообщение. Если дни установлены в числовом порядке, вы действительно можете использовать «ListIndex» (просто помните, что он начинается с нуля, поэтому вам придется вычесть 1). Это будет выглядеть так: 'Me.Combo_Day.ListIndex = (iMaxDate - 1)' Это работает? – user3561813

+0

Aaah, пример, который я копировал из используемого 'Me.Combo_Day.Value = Me.Combo_Day.ListIndex (iMaxDate-1)'. Неудивительно, что это не сработало! Большое спасибо, я попробую, когда завтра приеду в офис. –

Смежные вопросы