Note: The other languages of the website are Google-translated. Back to English
Увійти  \/ 
x
or
x
Реєстрація  \/ 
x

or

Як дозволити лише формат дати у певних клітинках?

Як можна обмежити список комірок, щоб дозволити лише введення формату дати на аркуші Excel? У цій статті я розповім про кілька цікавих прийомів для вирішення цієї роботи.

Дозволити лише формат дати у певних клітинках із функцією перевірки даних

Дозволити лише формат дати у певних клітинках із кодом VBA


стрілка синя права міхур Дозволити лише формат дати у певних клітинках із функцією перевірки даних

В Excel файл Перевірка достовірності даних це потужна функція, яка може допомогти вам створити випадаючий список, запобігти повторним записам тощо. Вона також може допомогти вам запобігти введенню іншого формату даних, але лише формату дати у певних клітинках. Будь ласка, виконайте такі дії:

1. Клацання дані > Перевірка достовірності даних > Перевірка достовірності даних, див. скріншот:

doc дозволити дату 1

2, в Перевірка достовірності даних діалогове вікно натисніть кнопку настройки , а потім виберіть виготовлений на замовлення від дозволяти випадаючий список, а потім введіть цю формулу: = І (ІЗНОМ (B2), ВЛІВО (КЛІТИНА ("формат", B2), 1) = "D") в Formula текстове поле, див. знімок екрана:

doc дозволити дату 2

примітки: У наведеній вище формулі, B2 - це перша комірка стовпця, для якої потрібно обмежити формат даних.

doc дозволити дату 3

3. Потім продовжуйте клацати Повідомлення про помилку на діалоговому вікні, виконайте такі дії:

(1.) Перевірте Показувати попередження про помилку після введення недійсних даних варіант;

(2.) Під стиль спадне меню, будь ласка, виберіть Стоп варіант;

(3.) Введіть назва і Повідомлення про помилку що ви хочете відобразити у вікні підказки.

4. Після закінчення налаштувань натисніть OK , і тепер, коли ви вводите дані, які не є реальним форматом дати, з'явиться вікно запиту, щоб нагадати вам, як показано на екрані:

doc дозволити дату 4


стрілка синя права міхур Дозволити лише формат дати у певних клітинках із кодом VBA

Другий спосіб - я ввів для вас код VBA.

1. Активуйте робочий аркуш, який ви хочете використовувати.

2. Потім клацніть правою кнопкою миші вкладку аркуша та виберіть Переглянути код у контекстному меню див. знімок екрана:

doc дозволити дату 5

3. У відображеному Microsoft Visual Basic для додатків вікно, скопіюйте та вставте наведений нижче код у Модулі, див. скріншот:

Код VBA: Дозволити лише введення формату дати у певні комірки:

Private Sub Worksheet_Change(ByVal Target As Range)
'updateby Extendoffice
Set w = ActiveSheet.Range("B2:B12")
For Each c In w
If c.Value <> "" And Not IsDate(c) Then
c.ClearContents
MsgBox "Only a date format is permitted in this cell."
End If
Next c
End Sub

doc дозволити дату 6

4. Потім збережіть оголошення, закрийте код, тепер, коли ви введете значення, яке не є форматом дати, в діапазоні B2: B12, з’явиться підказка, щоб нагадати вам, і значення комірки буде одночасно очищено, див. Знімок екрана:

doc дозволити дату 7


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

  • Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Понад 300 потужних функцій. Підтримує Office / Excel 2007-2019 та 365. Підтримує всі мови. Простота розгортання на вашому підприємстві чи в організації. Повна функція 30-денної безкоштовної пробної версії. 60-денна гарантія повернення грошей.
вкладка kte 201905

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці

 

Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Bart · 1 years ago
    Hello,
    Sorry for refreshing, the code works very nice, thank you. I just want to add one more check if its possible.
    Is it possible to check cell on the left if it contain certain value. Basically what I need is: if cell on the left contain N then that cell in range have to be input as a date.
    If cell on the left is Y then that cell needs to stay blank.
  • To post as a guest, your comment is unpublished.
    Roberto Luongo · 1 years ago
    How can I oblige to enter a time? (hh:mm)
    Private Sub Worksheet_Change(ByVal Target As Range)
    'updateby Extendoffice 20150530
    Set w = ActiveSheet.Range("B2:B12")
    For Each c In w
    If c.Value <> "" And Not IsDate(c) Then <----------------------------And Not isTime(c) doesn't work!
    c.ClearContents
    MsgBox "Only a date format is permitted in this cell."
    End If
    Next c
    End Sub
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello, Roberto,
      To only allow time format to be entered, you should apply the below code:

      Private Sub Worksheet_Change(ByVal Target As Range)
      'updateby Extendoffice
      Dim xArr As Variant
      Dim xF As Integer
      Dim xB As Boolean
      Dim xWRg, xCRg As Range
      Set xWRg = ActiveSheet.Range("B2:B20")
      For Each xCRg In xWRg
      xArr = Split(xCRg.Value, ":")
      xB = False
      If UBound(xArr) <= 2 Then
      For xF = LBound(xArr) To UBound(xArr)
      If IsNumeric(xArr(xF)) Then
      If xF = 0 Then
      If (xArr(xF) > 0) And (xArr(xF) < 24) Then
      Else
      xB = True
      GoTo BTime
      End If
      Else
      If (xArr(xF) > 0) And (xArr(xF) < 60) Then
      Else
      xB = True
      GoTo BTime
      End If
      End If
      Else
      xB = True
      GoTo BTime
      End If
      Next
      Else
      MsgBox "Only a time format is permitted in this cell."
      xCRg.ClearContents
      End If
      BTime:
      If xB Then
      MsgBox "Only a time format is permitted in this cell."
      xCRg.ClearContents
      End If
      Next xCRg
      End Sub

      Please try it, thank you!
  • To post as a guest, your comment is unpublished.
    Kevin · 2 years ago
    Thank you so much, for the VBA code to be applied to multiple columns can you please provide the formula?.. I tried but ended up getting a 405 error!
    • To post as a guest, your comment is unpublished.
      skyyang · 2 years ago
      Hello, Kevin,
      To make the code applied for multiple ranges, you just need to add the cell references into the code as below:

      Private Sub Worksheet_Change(ByVal Target As Range)
      Set w = ActiveSheet.Range("B2:B12,A1:A10,C5:C20")
      For Each c In w
      If c.Value <> "" And Not IsDate(c) Then
      c.ClearContents
      MsgBox "Only a date format is permitted in this cell."
      End If
      Next c
      End Sub

      Please try, hope it can help you!
      • To post as a guest, your comment is unpublished.
        Kevin · 2 years ago
        Thanks a lot @skyyang, really appreciate your help :)
  • To post as a guest, your comment is unpublished.
    Ashok · 3 years ago
    how to add a date validation for date format "DD-mmm-yyy" (15-Dec-2018) like this
  • To post as a guest, your comment is unpublished.
    sagar · 4 years ago
    which date format is this function allowed. It is not working for some dates