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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 21:03   #1
Евгений Уральский
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 20
Вопрос Запрет ввода букв

Уважаемые знатоки макросов!
Можно ли создать макрос, запрещающий ввод в ячейку (ячейки) буквенных значений? И если да, как он примерно должен выглядеть?
Не Боги горшки обжигают, все начинали с малого, даже сами Боги..
Евгений Уральский вне форума Ответить с цитированием
Старый 30.11.2010, 21:12   #2
kim2
Форумчанин
 
Регистрация: 23.03.2010
Сообщений: 101
По умолчанию

Макросом можно сделать почти все, только здесь можно обойтись стандартной проверкой данных. Выбрать тип данных "Действительное"
kim2 вне форума Ответить с цитированием
Старый 30.11.2010, 21:22   #3
Евгений Уральский
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 20
По умолчанию

Ну а вот если проверкой не пользоваться? Если именно макрос интересует?
Не Боги горшки обжигают, все начинали с малого, даже сами Боги..
Евгений Уральский вне форума Ответить с цитированием
Старый 30.11.2010, 21:24   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Смотрите: Как запретить ввод данных не являющихся цифрами ?
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 30.11.2010, 21:41   #5
Евгений Уральский
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 20
По умолчанию

У меня такая вот получается фиговина, но не могу найти где напортачил, поскольку не на все ячейки распространяется:
Private Sub Worksheet_Change(ByVal Target As Range) 'Ïðîöåäóðà çàïðåòà ââîäà ñèìâîëîâ
If (Target.Rows.Count = 1) And (Target.Columns.Count = 1) Then
If (Target.Row) And (Target.Column) Then
Application.EnableEvents = False
If IsNumeric(Target.Value) <> True Then 'Åñëè ÿ÷åéêà íå öèôðà òî...
TolkoTzifra = MsgBox("Ââîäèòå òîëüêî öèôðû", vbOKOnly + vbCritical, "Îøèáêà") 'Ìåñàäæ áîêñ...
Cells(Target.Row, Target.Column).Select 'ïîñëå çàêðûòèÿ ìåñàäæáîêñ âûäåëåíèå ñòàðîé ÿ÷åéêè
Selection.ClearContents 'î÷èñòêà çíà÷åíèÿ ñòàðîé ÿ÷åéêè
Selection.NumberFormat = "0.0" 'óñòàíîâêà ôîðìàòà ÿ÷åéêè
Else:
Cells(Target.Row, Target.Column + 1).Select 'èíà÷å ïåðåõîä íà ñëåäóùóþ ïî ñòðî÷êå ÿ÷åéêó
End If
Application.EnableEvents = True
End If
End If
End Sub
Не Боги горшки обжигают, все начинали с малого, даже сами Боги..
Евгений Уральский вне форума Ответить с цитированием
Старый 30.11.2010, 21:53   #6
Евгений Уральский
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 20
По умолчанию

Уважаемый Виктор, не работают почему-то те макросы, что там написаны ((
Не Боги горшки обжигают, все начинали с малого, даже сами Боги..
Евгений Уральский вне форума Ответить с цитированием
Старый 30.11.2010, 22:40   #7
Евгений Уральский
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 20
Хорошо

В общем, в итоге сделал и все пошло на ура:

Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Rows.Count = 1) And (Target.Columns.Count = 1) Then
Application.EnableEvents = False
If IsNumeric(Target.Value) <> True Then
TolkoTzifra = MsgBox("Вводите только цифры", vbOKOnly + vbCritical, "Ошибка")
Cells(Target.Row, Target.Column).Select
Selection.ClearContents
Selection.NumberFormat = "0.0"
Else:
Cells(Target.Row, Target.Column + 1).Select
End If
Application.EnableEvents = True
End If
End Sub

Извините, что занял Ваше время
Не Боги горшки обжигают, все начинали с малого, даже сами Боги..
Евгений Уральский вне форума Ответить с цитированием
Старый 30.11.2010, 23:12   #8
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
не работают почему-то те макросы, что там написаны
Простите, невнимательно прочитал Ваш вопрос.
Те коды применяются для текстбоксов форм (кстати, отлично работают), хотя подход и принцип похож
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 30.11.2010, 23:22   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

макрос я бы написал такой:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  For Each cl In Target.Cells
    If WorksheetFunction.IsText(cl) Then cl.ClearContents
  Next
End Sub
во вложенном файле проверка данных стандартными средствами (той же функцией ЕТЕКСТ())
Вложения
Тип файла: rar Книга467.rar (5.6 Кб, 92 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 01.12.2010, 00:20   #10
Евгений Уральский
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 20
По умолчанию

Минимум текста - максимум отдачи!!!! Великолепное решение!! )
Не Боги горшки обжигают, все начинали с малого, даже сами Боги..
Евгений Уральский вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет нажатия кнопки и запрет неправильного ввода данных De_Kurlzz Помощь студентам 1 15.06.2011 15:14
Запрет ввода с клавиатуры DoGFoX Помощь студентам 5 16.06.2010 23:40
Запрет ввода с клавиатуры букв Omedus Общие вопросы Delphi 13 16.05.2010 14:39
Как сделать запрет ввода букв в поле для ввода input zvezda_t PHP 1 27.12.2009 22:02
Запрет ввода в Stringgrid D-Snaker Помощь студентам 1 18.06.2009 08:08