Проверка «результатов» полосы прокрутки в Excel

310
Letokteren

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

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

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

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

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

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

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

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

0

1 ответ на вопрос

0
teylyn

You can assign a macro to each scrollbar that will check if End Date is a valid date. Use the same macro for both scrollbars. In this code example, C3 has the start date, G3 has the end date. Whenever the end date is earlier than the start date, the macro will pop up a message and then set the end date equal to the start date.

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 

Похожие вопросы