2013-07-09 4 views
0

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

У меня уже есть проверка данных, установленная до десятичной, но когда я пытаюсь проверить ее, введя дату (1/2, 1/2/11 или 1-2-11), excel изменяет формат номера ячейки на дроби или дата и событие ошибки проверки не происходит.

В качестве альтернативы, есть ли способ от меня заблокировать формат чисел для диапазона ячеек, чтобы excel прекратил преобразовывать формат ячейки на основе пользовательского ввода?

ответ

0

Вы можете поместить этот код в Модуль VBA для рабочего листа. Он показывает сообщение, очищает значение и устанавливает формат обратно в Учет и отчетность:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim AccountingRange As Excel.Range 
Dim cell As Excel.Range 

Set AccountingRange = Me.Range("B2:B20") 
If Intersect(Target, AccountingRange) Is Nothing Then 
    Exit Sub 
End If 

Application.EnableEvents = False 
For Each cell In Intersect(Target, AccountingRange) 
    If IsDate(cell.Text) Then 
     With cell 
      MsgBox "You entered a date in " & .Address & "." & vbCrLf & "Please don't do that!" 
      cell.ClearContents 
      .NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)" 
     End With 
    End If 
Next cell 
Application.EnableEvents = True 
End Sub 
+0

Спасибо! Именно то, что я искал. Я испытываю небольшую проблему при тестировании этого. Когда я набираю числа, такие как 1, 1.1, 1.12, макрос работает отлично в течение половины времени. Но в других случаях это говорит мне, что я ввел дату, когда я ввел десятичное число. – Cate

1

Вы можете использовать инструмент проверки данных в Excel

Select the validation

С помощью этого вы можете заставить пользователя ввести определенный тип данных в ячейке

+0

Я уже проверки данных установить в десятичную, но когда я пытаюсь тестирования путем ввода даты (1/2, 1/2/11 или 1-2-11) excel изменяет формат номера ячейки на фракцию или дату, и ошибка проверки не возникает. – Cate

Смежные вопросы