Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

Проверка формата данных при вставке

Автор Наталия Борисова, 25.06.2014, 14:35

« назад - далее »

Наталия Борисова

Всем привет!

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

Спасибо.

RAN

И как вы это себе представляете? В Excel все даты числа.
Вводим "2".
Как Excel должен его воспринять? Как "2" или как "01.01.1900г".?

Наталия Борисова

Цитата: RAN от 25.06.2014, 22:22
И как вы это себе представляете? В Excel все даты числа.
Вводим "2".
Как Excel должен его воспринять? Как "2" или как "01.01.1900г".?

Я себе это представляю аналогично тому, как это работает сейчас в файле.
Если в столбец с датой вручную вбивать дату в формате, все ок. Если вбивать "2" или "ж", выдает ошибку. И т.д.
Хочется, чтобы это правило работало и при Ctrl+C, Ctrl+V.

Но вообще дата не очень принципиальна, интересуют скорее просто числа, т.к. пользователи иногда каким-то образом вставляют их как текст.

cheshiki1

в модуль листа
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Not Intersect(Target, Range("B2:B20,F2:F20")) Is Nothing Then
     If IsNumeric(Target.Value) = 0 Then
      MsgBox "Вы ввели неверное значение, разрешен ввод только числа"
      Target = "": Target.Select
      Else: Exit Sub
    End If
ElseIf Not Intersect(Target, Range("A2:A20")) Is Nothing Then
  If IsDate(Target.Value) = 0 Then
      MsgBox "Вы ввели неверное значение, разрешен ввод только даты"
      Target = "": Target.Select
    End If
End If
Application.EnableEvents = True
End Sub