Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2018, 00:21   #1
Марина11
Пользователь
 
Регистрация: 26.09.2017
Сообщений: 11
По умолчанию Запретить ввод формулы в диапазон ячеек

Здравствуйте! Подскажите, как решить такой вопрос: есть количество клиентов, которые вносяться в определенную графу отчёта и понятно, что это целое число. Но некоторые сотрудники умудряються вместо значения, например, цифры 89 внести это в виде формулы =60+9+10. Необходимо запретить вносить таким образом данные, но незнаю как. Пришла к выводу, что здесь, скорее всего нужен макрос VBA, но пока не нашла ничего из кодов, что могло бы помочь. Подскажите, пожалуйста, кто что сможет. Уточнее - нужно для версии Excel 2003/
Заранее благодарю!
Марина11 вне форума Ответить с цитированием
Старый 19.01.2018, 07:04   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

A1:D4 только числа, иначе пусто
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
    Application.EnableEvents = False
    For Each cell In Target
        If Not Application.Intersect(cell, Range("A1:D4")) Is Nothing Then
           If Not IsNumeric(cell.Value) Then
              cell.Value = vbNullString
           End If
        End If
    Next cell
    Application.EnableEvents = True
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 19.01.2018, 13:17   #3
Марина11
Пользователь
 
Регистрация: 26.09.2017
Сообщений: 11
По умолчанию

почему-то макрос не срабатывает - формула всё равно вводиться.
Вложения
Тип файла: xls Книга1.xls (18.5 Кб, 14 просмотров)
Марина11 вне форума Ответить с цитированием
Старый 19.01.2018, 13:59   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Марина11 Посмотреть сообщение
формула всё равно вводится.
попробуйте такой макрос:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
    Application.EnableEvents = False
    For Each cell In Target
        If Not Application.Intersect(cell, Range("A1:D4")) Is Nothing Then
           If Not IsNumeric(cell.Value) Then
              cell.Value = vbNullString
           Else
              cell.Value = 1 * cell.Value
           End If
        End If
    Next cell
    Application.EnableEvents = True
End Sub
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2018, 14:02   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
    Application.EnableEvents = False
    For Each cell In Target
        If Not Application.Intersect(cell, Range("A1:D4")) Is Nothing Then
           If Not IsNumeric(cell.Value) Or cell.HasFormula Then
              cell.Value = vbNullString
           End If
        End If
    Next cell
    Application.EnableEvents = True
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 19.01.2018, 15:18   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Код:
if Not IsNumeric(cell.Value) Or cell.HasFormula Then
на мой взгляд у меня (пост #4) более дружелюбное к пользователю решение - если он введёт формулу, то в ячейку вставится результат вычислений, а не пустая строка.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2018, 15:28   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Юзерфрендли не заказывали.
Раз контора такая жесткая, что не позволяет формулами пользоваться, нечего баловать юзверя с подстановками результатов, пускай на арифмометре считает, а в ЕТ вносит суто число.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распространение формулы на диапазон листов guitar2003 Microsoft Office Excel 4 02.06.2016 14:39
диапазон ячеек marina krasa Microsoft Office Excel 1 03.05.2013 19:47
диапазон ячеек в excel studentki Microsoft Office Excel 5 12.07.2012 16:00
Запретить ввод более одной десятичной точки в форму ввода("некорректный ввод") adller_one PHP 1 13.01.2011 23:59
Диапазон ячеек равен 0 segail Microsoft Office Excel 16 14.02.2010 22:14