Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автоматическая замена знаков в ячейках - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автоматическая замена знаков в ячейках (Макросы/Sub)
Автоматическая замена знаков в ячейках
vitos88 Дата: Вторник, 26.12.2017, 11:52 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 5 ±
Замечаний: 0% ±

Добрый день! Задача следующая, как прописать так, чтобы в конкретном столбце D все запятые менялись на точки после ввода?

Например: я ввожу в ячейку D5 "папа,мама,брат,сестра", а после ввода получаю "папа.мама.брат.сестра"

Спасибо!
К сообщению приложен файл: 6945546.xlsx(9Kb)
 
Ответить
СообщениеДобрый день! Задача следующая, как прописать так, чтобы в конкретном столбце D все запятые менялись на точки после ввода?

Например: я ввожу в ячейку D5 "папа,мама,брат,сестра", а после ввода получаю "папа.мама.брат.сестра"

Спасибо!

Автор - vitos88
Дата добавления - 26.12.2017 в 11:52
sboy Дата: Вторник, 26.12.2017, 12:56 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1268
Репутация: 338 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
В модуль листа
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 4 Then Exit Sub
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
    Target.Value = Replace(Target.Value, ",", ".")
Application.EnableEvents = True
End Sub
[/vba]


Сообщение отредактировал sboy - Вторник, 26.12.2017, 13:20
 
Ответить
СообщениеДобрый день.
В модуль листа
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 4 Then Exit Sub
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
    Target.Value = Replace(Target.Value, ",", ".")
Application.EnableEvents = True
End Sub
[/vba]

Автор - sboy
Дата добавления - 26.12.2017 в 12:56
bmv98rus Дата: Вторник, 26.12.2017, 12:56 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 915
Репутация: 156 ±
Замечаний: 0% ±

Excel 2013/2016
поместить в функцию листа
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Set MyRange = Intersect(Target, Range("d:d"))
    If Not MyRange Is Nothing Then
        Application.EnableEvents = False
        For Each Mycell In MyRange
            Mycell.Value = Replace(Mycell.Value, ",", ".")
        Next Mycell
        Application.EnableEvents = True
    End If
End Sub
[/vba]

SBoy, при всем уваженнии, зациклили по событию :-)


Сообщение отредактировал bmv98rus - Вторник, 26.12.2017, 12:58
 
Ответить
Сообщениепоместить в функцию листа
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Set MyRange = Intersect(Target, Range("d:d"))
    If Not MyRange Is Nothing Then
        Application.EnableEvents = False
        For Each Mycell In MyRange
            Mycell.Value = Replace(Mycell.Value, ",", ".")
        Next Mycell
        Application.EnableEvents = True
    End If
End Sub
[/vba]

SBoy, при всем уваженнии, зациклили по событию :-)

Автор - bmv98rus
Дата добавления - 26.12.2017 в 12:56
vitos88 Дата: Вторник, 26.12.2017, 13:23 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 5 ±
Замечаний: 0% ±

Что делать, если в функции листа у меня уже есть вот это:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d0_ As Range, d_ As Range
Set d0_ = Intersect(Target, Range("F:F,R:R"))
If d0_ Is Nothing Then Exit Sub
Application.ScreenUpdating = 0
Application.EnableEvents = 0
For Each d_ In d0_
If d_.Row > 3 Then
If d_ <> "" Then
d_ = UCase(d_)
End If
End If
Next d_
Application.EnableEvents = 1
Application.ScreenUpdating = 1
End Sub
[/vba]


Сообщение отредактировал vitos88 - Вторник, 26.12.2017, 13:35
 
Ответить
СообщениеЧто делать, если в функции листа у меня уже есть вот это:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d0_ As Range, d_ As Range
Set d0_ = Intersect(Target, Range("F:F,R:R"))
If d0_ Is Nothing Then Exit Sub
Application.ScreenUpdating = 0
Application.EnableEvents = 0
For Each d_ In d0_
If d_.Row > 3 Then
If d_ <> "" Then
d_ = UCase(d_)
End If
End If
Next d_
Application.EnableEvents = 1
Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - vitos88
Дата добавления - 26.12.2017 в 13:23
sboy Дата: Вторник, 26.12.2017, 13:24 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1268
Репутация: 338 ±
Замечаний: 0% ±

Excel 2010
при всем уваженнии

Взаимно!
Я просто отвечал на вопрос ТС "как?", но согласен, что выкладывать зацикленное событие неправильно. Исправил в посте.
 
Ответить
Сообщение
при всем уваженнии

Взаимно!
Я просто отвечал на вопрос ТС "как?", но согласен, что выкладывать зацикленное событие неправильно. Исправил в посте.

Автор - sboy
Дата добавления - 26.12.2017 в 13:24
bmv98rus Дата: Вторник, 26.12.2017, 13:45 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 915
Репутация: 156 ±
Замечаний: 0% ±

Excel 2013/2016
Что делать,

совместить


Сообщение отредактировал bmv98rus - Вторник, 26.12.2017, 13:48
 
Ответить
Сообщение
Что делать,

совместить

Автор - bmv98rus
Дата добавления - 26.12.2017 в 13:45
vitos88 Дата: Вторник, 26.12.2017, 15:26 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 5 ±
Замечаний: 0% ±

Спасибо, сейчас попробуем..


Сообщение отредактировал vitos88 - Вторник, 26.12.2017, 15:34
 
Ответить
СообщениеСпасибо, сейчас попробуем..

Автор - vitos88
Дата добавления - 26.12.2017 в 15:26
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автоматическая замена знаков в ячейках (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!