Перевірка "результатів" панелі прокрутки в Excel


0

Я шукав високо і низько, але ніде не знайшов нічого, що могло б мені допомогти.

Ось моя проблема:

Мені потрібно встановити діапазон дат із двома повзунками. Один повзунок встановлює дату початку досліджуваного періоду, другий встановлює дату закінчення. Це само по собі не є проблемою, але мені потрібно підтвердити це. Наприклад, коли користувач хоче встановити дату початку пізніше дати закінчення (або навпаки), програма не повинна дозволяти йому / їй.

Що я спробував поки що:

Простий список перевірки було б непогано. Я міг вибрати дати з іншого списку, щоб використовувати ці значення. Але мені потрібно використовувати список прокрутки з одним значенням, поданим у той час, і двома стрілками, а не одним зі спадним.

Я спробував встановити валідацію на клітинках, де представлені дати, але це працює лише в тому випадку, якщо я вводя їх вручну і не реагує на задані повзунки значення.

Я спробував налаштувати макрос, який встановлює максимальне значення для початку встановлення дати-setter-прокрутки до значення ending-date-setter-scroll, але я невдало провалився (і я вважаю, що відповідь набагато простіший за це ).

Я навіть використовував IF (= IF (A2> A1; A1; "ПОМИЛКА")), але знову ж таки: це не зупиняє користувача вводити неправильні дані. І фактичне значення повзунків все одно можна збільшити, тому, якщо я хочу виправити себе і знизити його значення, можливо, мені доведеться натискати його не один раз.

Відповіді:


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.