Приветствую всех. Отправляю в АУ файлик с мониторингом. Каждый раз внизу указываю, что запрещено вводить числа в таком виде как: 20= или 20-00 или 20.00, а также если цены нет слова НЕТ не писать. Но все равно они умудряются это делать. Данные я систематизирую в другую сводную таблицу с формулами. И если там стоят = или - или точка, то формулы не считаются. Может кто знает как запретить ввод таких значений. Уже устал коллегам про это говорить. Заранее спасибо.
Приветствую всех. Отправляю в АУ файлик с мониторингом. Каждый раз внизу указываю, что запрещено вводить числа в таком виде как: 20= или 20-00 или 20.00, а также если цены нет слова НЕТ не писать. Но все равно они умудряются это делать. Данные я систематизирую в другую сводную таблицу с формулами. И если там стоят = или - или точка, то формулы не считаются. Может кто знает как запретить ввод таких значений. Уже устал коллегам про это говорить. Заранее спасибо.Mark1976
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng1 As Range Dim str1 As String
str1 = "*[-=.]*" Set rng1 = Range("d2:f16") If Target.Cells.Count > 1 Then Exit Sub If Intersect(Target, rng1) Is Nothing Then Exit Sub If Target Like str1 Then Application.Undo MsgBox "Нельзя вводить -=.", 48, "Запрещённый символ" End If End Sub
[/vba]
можно через макрос в модуле листа [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng1 As Range Dim str1 As String
str1 = "*[-=.]*" Set rng1 = Range("d2:f16") If Target.Cells.Count > 1 Then Exit Sub If Intersect(Target, rng1) Is Nothing Then Exit Sub If Target Like str1 Then Application.Undo MsgBox "Нельзя вводить -=.", 48, "Запрещённый символ" End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng1 As Range Dim str1 As String
str1 = "*[-=.нет]*" Set rng1 = Range("d2:f16") If Target.Cells.Count > 1 Then Exit Sub If Intersect(Target, rng1) Is Nothing Then Exit Sub If Target Like str1 Then Application.Undo MsgBox "Нельзя вводить -=.нет", 48, "Запрещённый символ" End If End Sub
[/vba]
Добавил НЕТ. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng1 As Range Dim str1 As String
str1 = "*[-=.нет]*" Set rng1 = Range("d2:f16") If Target.Cells.Count > 1 Then Exit Sub If Intersect(Target, rng1) Is Nothing Then Exit Sub If Target Like str1 Then Application.Undo MsgBox "Нельзя вводить -=.нет", 48, "Запрещённый символ" End If End Sub
Для нет надо по-другому, иначе будет реагировать на любой из символов етн [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng1 As Range Dim str1 As String
str1 = "*[-=.]*" Set rng1 = Range("d2:f16") If Target.Cells.Count > 1 Then Exit Sub If Intersect(Target, rng1) Is Nothing Then Exit Sub If Target Like str1 Or UCase(Target) Like "НЕТ" Then Application.Undo MsgBox "Нельзя вводить -=. слово НЕТ", 48, "Запрещённый символ" End If End Sub
[/vba]
Для нет надо по-другому, иначе будет реагировать на любой из символов етн [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng1 As Range Dim str1 As String
str1 = "*[-=.]*" Set rng1 = Range("d2:f16") If Target.Cells.Count > 1 Then Exit Sub If Intersect(Target, rng1) Is Nothing Then Exit Sub If Target Like str1 Or UCase(Target) Like "НЕТ" Then Application.Undo MsgBox "Нельзя вводить -=. слово НЕТ", 48, "Запрещённый символ" End If End Sub
Николай, если Ваши коллеги из АУ такие тупорылые, то макрос точно не поможет - они просто не будут нажимать "Разрешить макросы" и всё. Можно, конечно, сделать отдельный лист с большими буквами "Разреши макросы"; при открытии файла будет виден только он, а после разрешения макросов этот лист скрывается, а лист с таблицей становится доступным. Но зачем?
Можно сделать проверку данных на действительное число (см. файл)
Хотя я бы не морочился - на любую хитрую резьбу свой болт найдется, а просто в результирующей таблице делал бы перевод таких значений в нормальные числовые. Например, функцией ПОДСТАВИТЬ:
Или макросом тоже можно, но не в момент ввода АУ-шниками, а один раз запускать макрос преобразования "=" "-" "." в "," уже у себя после получения Вами файла.
Николай, если Ваши коллеги из АУ такие тупорылые, то макрос точно не поможет - они просто не будут нажимать "Разрешить макросы" и всё. Можно, конечно, сделать отдельный лист с большими буквами "Разреши макросы"; при открытии файла будет виден только он, а после разрешения макросов этот лист скрывается, а лист с таблицей становится доступным. Но зачем?
Можно сделать проверку данных на действительное число (см. файл)
Хотя я бы не морочился - на любую хитрую резьбу свой болт найдется, а просто в результирующей таблице делал бы перевод таких значений в нормальные числовые. Например, функцией ПОДСТАВИТЬ:
Или макросом тоже можно, но не в момент ввода АУ-шниками, а один раз запускать макрос преобразования "=" "-" "." в "," уже у себя после получения Вами файла._Boroda_
_Boroda_, сорь за глупый вопрос, но если у меня диапазон расширится как тогда быть? Формула прописывается в каждую ячейку? Я просто в D2 не вижу формулы.
_Boroda_, сорь за глупый вопрос, но если у меня диапазон расширится как тогда быть? Формула прописывается в каждую ячейку? Я просто в D2 не вижу формулы.Mark1976