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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2022, 08:43   #1
vostok
Форумчанин
 
Регистрация: 29.04.2009
Сообщений: 119
По умолчанию запретить пробел

Друзья, всех с Новым Годом! Всех благ вам в 2022-м году!

Давно не заходил сюда, но всё, в чем вы помогали мне для решения моих задач, успешно работает до сих пор, но за эти годы всплывает проблема, как решить ее не знаю, и очень надеюсь на вашу помощь.

Дело в том, что при работе в Экселе случайно кладут журнал на клавишу пробела, при этом в незащищенных ячейках вставляется пробел или много пробелов, эти ячейки зависимые, и все рушится в конечных результатах. А обнаружить пробел в ячейке достаточно сложно.

На один-два-три пробела я сделал условное форматирование - изменение цвета, но не помогает, когда пробелов много.
Как запретить ввод пробела(-ов) в определенном массиве ячеек, (они для ввода цифр)?
Спасибо откликнувшимся.
vostok вне форума Ответить с цитированием
Старый 01.01.2022, 20:47   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

положите этот макрос
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rg As Range, c As Range
  Set rg = Intersect(Target, [b:b])
  If rg Is Nothing Then Exit Sub
  Application.EnableEvents = False
  For Each c In rg
    c = Replace(c, " ", "")
  Next
  Application.EnableEvents = True
End Sub
в модуль листа
будут запрещены пробелы в колонке В
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.01.2022, 00:26   #3
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 163
По умолчанию

С Новым Годом!

Цитата:
Сообщение от IgorGO Посмотреть сообщение
положите этот макрос
IgorGO, Ваш макрос будет устранять все пробелы в диапазоне.
Понял так, что человек хочет устранять только случайно введёные в ячейку пробелы.

Задачу бы решал как-то так (для частного листа конкретной книги):
Код:
Private Sub WorkSheet_Change(ByVal Target As Range)
	If Target.Count > 1 Then Exit Sub
    If Len(Target.Formula) = 0 Then Exit Sub
        Dim Probel As Boolean, iSimv%
        Probel = True
        For iSimv = 1 To Len(Target.Formula)
            If Mid(Target.Formula, iSimv, 1) <> " " Then
                'Debug.Print Mid(Target.Formula, iSimv)
                Probel = False: Exit For
            End If
        Next iSimv       
        If Probel Then
            Application.EnableEvents = False
                Target.Formula = ""
            Application.EnableEvents = True
        End If
End Sub
Но подозреваю, что ожидается решение для всех листов и даже всех книг.
Elixi вне форума Ответить с цитированием
Старый 02.01.2022, 19:45   #4
vostok
Форумчанин
 
Регистрация: 29.04.2009
Сообщений: 119
По умолчанию

IgorGO, спасибо,
Elixi, спасибо, именно, "человек хочет устранять только случайно введёные в ячейку пробелы", там массив-то небольшой, J11:U999, соседние нельзя, там уже слова и пробелы. Буду пробовать, правда, из-за того, что всё работает, уже позабыл, как это сделать - внедрить код))) Гугл пока работает.
vostok вне форума Ответить с цитированием
Старый 03.01.2022, 10:17   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Так а может не с пробелами лишними бороться, а найти в интернете код который позволяет вводить в ячейки только цифры? В первом сообщении сказано об этом.
Или, все же, не только цифры? Тогда в коде IgorGO заменять не один пробел на пусто, а циклически 2 пробела на 1
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 13.01.2022, 06:58   #6
vostok
Форумчанин
 
Регистрация: 29.04.2009
Сообщений: 119
По умолчанию

Aleksandr H.,
Да, в этом массиве только цифры, но большинство ячеек пустует, поэтому не определить, где накосячили.

Последний раз редактировалось vostok; 13.01.2022 в 07:06. Причина: проверил
vostok вне форума Ответить с цитированием
Старый 13.01.2022, 08:37   #7
Igor1961
Пользователь
 
Регистрация: 05.10.2015
Сообщений: 39
По умолчанию

Цитата:
Сообщение от vostok Посмотреть сообщение
Дело в том, что при работе в Экселе случайно кладут журнал на клавишу пробела
В такой ситуации самый эффективный способ - купить удобную подставку для журнала и поставить ее слева от клавиатуры. Иначе с подобным подходом к работе в следующий раз Вам придется просить написать код для защиты от пролитого на клавиатуру кофе, но тогда не только VBA, даже C++ не поможет
С новым годом!
Igor1961 вне форума Ответить с цитированием
Старый 14.01.2022, 19:45   #8
vostok
Форумчанин
 
Регистрация: 29.04.2009
Сообщений: 119
По умолчанию

Igor1961,
Смешно, но не очень, наемные работники не такое еще вытворяют, могут на терминале безналичной оплаты вместо суммы ввести внутренний код (из компьютера!) и отпустить клиента, даже не поняв, что это было
vostok вне форума Ответить с цитированием
Старый 15.01.2022, 09:53   #9
Miguel Sanchez
Пользователь
 
Регистрация: 09.03.2011
Сообщений: 33
По умолчанию

а если через target.validation пробовать...
Miguel Sanchez вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать пробел amadeus017 Microsoft Office Excel 4 01.04.2015 05:03
Как запретить пробел eregi emeraudx PHP 2 18.06.2010 15:44
Как заменить обычний пробел на неразрывный пробел Jaroslav Microsoft Office Excel 2 05.05.2010 11:57
Пробел!? Paul_AG Общие вопросы C/C++ 7 11.05.2009 17:19
каксделать пробел VolkasHanas Microsoft Office Access 2 21.09.2008 17:00