Я искал все выше и ниже, но нигде не нашел чего-то, что могло бы мне помочь.

Вот моя проблема:

Мне нужно установить диапазон дат с двумя ползунками. Один ползунок устанавливает дату начала исследуемого периода, второй - дату окончания. Само по себе это не проблема, но мне нужно это проверить. Например, когда пользователь хочет установить дату начала позже даты окончания (или наоборот), программа не должна позволять ему / ей.

Что я уже пробовал:

Простой список проверки был бы хорош. Я мог бы выбрать даты из другого списка, чтобы использовать эти значения. Но мне нужно использовать список прокрутки с одним значением, представленным одновременно, и с двумя стрелками, а не с раскрывающимся списком.

Я попытался установить проверку для ячеек, в которых представлены даты, но это работает, только если я ввожу их вручную, и не реагирует на значения, заданные ползунком.

Я попытался настроить макрос, который устанавливает максимальное значение start-date-setter-scroll равным значению end-date-setter-scroll, но мне не удалось с треском (и я думаю, что ответ гораздо проще, чем это ).

Я даже использовал IF (= IF (A2> A1; A1; "ERROR")), но опять же: это не мешает пользователю вводить неверные данные. И фактическое значение ползунков все еще может быть увеличено, поэтому, если я хочу исправить себя и понизить его значение, мне, возможно, придется нажимать его более одного раза.

1 ответ1

0

Вы можете назначить макрос для каждой полосы прокрутки, который будет проверять, является ли Дата окончания действительной датой. Используйте один и тот же макрос для обеих полос прокрутки. В этом примере кода C3 имеет дату начала, G3 имеет дату окончания. Всякий раз, когда дата окончания предшествует дате начала, макрос выдаст сообщение, а затем установит дату окончания равной дате начала.

Sub ScrollBar_Change()
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Sheet1")
    If ws.Range("G3") < ws.Range("C3") Then
        MsgBox "End date cannot be earlier than Start Date. Adjusting End date"
        ws.Range("G3") = ws.Range("C3")
    End If
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .