Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Строчные буквы в прописные через макрос
 
Ребят всем привет, облазил форум, нашел нужную тему и макрос для решения проблемы, но почему то после преобразования строчных букв в прописные, макрос ломается и иногда сам эксель крашится. В общем нужно, чтобы в диапазоне A2:A3000, вносимый текст преобразовывался в прописной

Макрос который использовал
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Cells.Count > 1 Then Exit Sub
   If Not Intersect(Target, Range("$A$2:$A$3000")) Is Nothing Then
       Target.Value = UCase(Target.Value)
   End If
End Sub
Изменено: Castiel666 - 4 Июн 2018 19:00:43
 
он не крашится, а выполняется до потери пульса, так как вы изменением вызываете его же. Перед изменением отключите события Aplication.enableEvents=false, а потом включите обратно.

Уппс Тема :  как избавится от нежелательного бесконечного  рекурсивного вызова Worksheet_Change
Изменено: БМВ - 4 Июн 2018 18:16:51
 
Добавьте отключение/включение отслеживания событий:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("$A$2:$A$3000")) Is Nothing Then
        Application.EnableEvents = False
       Target.Value = UCase(Target.Value)
    End If
    Application.EnableEvents = True
End Sub
 
Юрий М, А почему true за пределами IF?
 
Цитата
Юрий М написал:
Добавьте отключение/включение отслеживания событий:Код ? 12345678Private Sub Worksheet_Change(ByVal Target As Range)    If Target.Cells.Count > 1 Then Exit Sub    If Not Intersect(Target, Range("$A$2:$A$3000")) Is Nothing Then        Application.EnableEvents = False       Target.Value = UCase(Target.Value)    End If    Application.EnableEvents = TrueEnd Sub
Заработало!!!))) Огромное спасибо! =) тебе +100 к карме
 
Castiel666, кнопка цитирования не для ответа. Исправьте своё сообщение.
Мы знакомы?
Страницы: 1
Читают тему (гостей: 1)