Vba excel заменить запятую на точку в excel

This seems to be a continuation to my answer to your previous question, but if so I think you misunderstood what I meant. I’ve taken your code and amended it with my suggestion, but I’ve not tested it:

Public Sub VirgulaPunct()
Dim oRow As Range
Dim cell As Range
Dim i As Long, j As Long
Dim MyString As String
Dim aux As String

    Application.ScreenUpdating = False

    For i = Selection(Selection.Count).Row To Selection.Cells(1, 1).Row Step -1

        For j = Selection(Selection.Count).Column To Selection.Cells(1, 1).Column Step -1
            MyString = Cells(i, j).Value
            MyString = Replace(MyString, ",", ";+;", 1)
            MyString = Replace(MyString, ".", ",", 1)
            MyString = Replace(MyString, ";+;", ".", 1)
            Cells(i, j).Value = MyString
        Next j
    Next i
    Application.ScreenUpdating = True
End Sub

So as I said in my previous answer, I do 3 calls to Replace, but I do them for the whole string rather than per character in the string.

For future reference, it would probably be better if you updated your original question rather than to create a new one and then you could leave a comment for me under my answer and I’d seen that you have done so.

A_Qz

31 / 8 / 4

Регистрация: 21.01.2018

Сообщений: 53

1

Excel

Замена запятой на точку

09.12.2018, 11:23. Показов 20213. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Совсем маленький «зацеп». Несколько лет назад все работало как положено. А сегодня перестало.
Точку на запятую меняет. Все в порядке. По тексту:

Visual Basic
1
2
3
4
        sB = Application.ActiveWorkbook.ActiveSheet.Cells(iI, iJ).Value
        If sB = "" Or sB = " " Then sB = "0"
        sB = Replace(sB, ",", ".", , , 1)
        Application.ActiveWorkbook.Worksheets(1).Cells(iI, iJ) = Val(sB)

А вот обратно:

Visual Basic
1
2
3
4
        sB = Str(Application.ActiveWorkbook.ActiveSheet.Cells(iI, iJ).Value)
        If sB = "" Or sB = " " Then sB = "0"
        sB = Replace(sB, ".", ",", , , 1)
        Application.ActiveWorkbook.Worksheets(1).Cells(iI, iJ) = sB

запятая остается. Только содержимое ячейки переводит в текстовый формат, но запятая без изменении. Пробовал предварительно форматировать в текстовый, но ничего. Создается впечатление, где-то в VBA крепко зашита автозамена точки на запятую. Спасибо за объяснение.



1



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

09.12.2018, 11:23

4

1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

09.12.2018, 17:33

2

Лучший ответ Сообщение было отмечено A_Qz как решение

Решение

A_Qz, видимо в настройках экселя Пуск — Настройка — Дополнительно стоит галка Использовать системные разделители, а в винде разделитель запятая. Либо исправить в винде, либо здесь убрать галку и в Разделитель … поставить точку.



1



A_Qz

31 / 8 / 4

Регистрация: 21.01.2018

Сообщений: 53

09.12.2018, 21:51

 [ТС]

3

Спасибо за подсказку, убрал галку — «Использовать системные разделители». Win не трогал. Меняет запятую на точку, но только, если в Excel разделитель — запятая, то для того, чтобы была поставлена точка, ячейку обязательно предварительно нужно перевести в текстовый формат:

VB.NET
1
2
        Cells(iI, iJ).Select
        Selection.NumberFormat = "@"



0



Burk

1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

10.12.2018, 05:40

4

A_Qz,

Цитата
Сообщение от A_Qz
Посмотреть сообщение

Excel разделитель — запятая, то для того, чтобы была поставлена точка, ячейку обязательно предварительно нужно перевести в текстовый формат:

Так надо поставить разделитель — точку и всё работает, привожу макросы, на которых проверял

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub From()
'Dim sB As String
        sB = Application.ActiveWorkbook.ActiveSheet.Cells(1, 1).Value
        If sB = "" Or sB = " " Then sB = "0"
        sB = Replace(sB, ",", ".", , , 1)
        Worksheets(1).Cells(1, 1) = Val(sB)
End Sub
 
Sub From2()
        sB = Str(Application.ActiveWorkbook.ActiveSheet.Cells(1, 1).Value)
        If sB = "" Or sB = " " Then sB = "0"
        sB = Replace(sB, ".", ",", , , 1)
        Application.ActiveWorkbook.Worksheets(1).Cells(1, 1) = Val(sB)
End Sub

Добавлено через 24 минуты
A_Qz, что-то ошибся (точка на запятую), плохо проверил, а вот так вроде работает

Visual Basic
1
2
3
4
5
6
7
Sub From2()
        Dim sB As String
        sB = Application.ActiveWorkbook.ActiveSheet.Cells(1, 1).Value
        If sB = "" Or sB = " " Then sB = "0"
        sB = Replace(sB, ".", ",", , , 1)
        Application.ActiveWorkbook.Worksheets(1).Cells(1, 1) = sB
End Sub



0



A_Qz

31 / 8 / 4

Регистрация: 21.01.2018

Сообщений: 53

10.12.2018, 18:40

 [ТС]

5

Это все понятно. Но мне нужно было, что бы при разделителе — запятая, сохранялась после замены точка. С тем, что бы я мог этот файл экспортировать в другие программы, где разделитель — точка. Ход действий был такой: убрал галку «Использовать системные разделители» и поправил код

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
          Cells.Select
          Selection.NumberFormat = "@"
          For iI = 1 To iR
            For iJ = 1 To iC
              sB = CStr(Workbooks.Application.Selection.Cells(iI, iJ))
              sB = Replace(sB, ",", ".", 1, -1, 1)
              Workbooks.Application.Selection.Cells(iI, iJ) = sB
            Next iJ
          Next iI
        End If
        Selection.NumberFormat = "General"
        Cells(1, 1).Select

В этом коде все работает так, как мне надо. sB была определена как String ранее.
При смене точки на запятую код такой:

VB.NET
1
2
3
4
5
6
7
8
9
          Cells.Select
          Selection.NumberFormat = "General"
          For iI = 1 To iR
            For iJ = 1 To iC
              sB = Workbooks.Application.Selection.Cells(iI, iJ)
              If sB = "" Or sB = " " Then Workbooks.Application.Selection.Cells(iI, iJ) = "0"
              Workbooks.Application.Selection.Cells(iI, iJ) = Workbooks.Application.Selection.Cells(iI, iJ).Value
            Next iJ
          Next iI

Спасибо ещё раз.



0



 

Артём Москвитин

Пользователь

Сообщений: 46
Регистрация: 06.02.2021

#1

08.02.2022 11:27:32

Здраствуйте уважаемые форумчане, проблема в следующем: в прайс-листе нужно заменить символ , (запятая) на . (точку) в столбцах M, P, T,  Поделитесь пожалуйста формулой или макросом, а то работала встала, вот этот макрос почему то не работает, всю голову уже сломал!

Код
Sub Символ()
Cells.Replace What:=",", Replacement:=".", LookAt:=xlPart
End Sub

Прикрепленные файлы

  • Лист Microsoft Excel.xlsx (10.12 КБ)

 

отмечаете 3 названных столбца, Ctrl+H
в поле найти ,
в поле наменить на .
параметры, чнимаете птичку ячейка целиком
Заменить все
—————————
готово
сделаете это быстрее, чем я писал как это сделать

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Со столбцом M так не получается, он выдаёт не понять что, даже если формат ячеек изменить!

 

да, умеет Excel на лету преобразовать данные («помочь пользователю»), вы ему 2.3, а он вам в ответ на это 02.03.2022
сначала задаете формат ячеек (Текс), потом проводите замену
и вообще, я обычно ищу решение пока задача не будет решена точно и окончательно

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#5

08.02.2022 14:34:56

Артём Москвитин,

Цитата
Ігор Гончаренко: умеет Excel на лету преобразовать данные («помочь пользователю»), вы ему 2.3, а он вам в ответ на это 02.03.2022

верно, если точка является разделителем даты на компе (для русской локали обычно так и есть)

Цитата
Ігор Гончаренко: сначала задаете формат ячеек (Текс), потом проводите замену

а вот это не так. Excel всё равно преобразует в дату и плевать он хотел на текстовый формат

Итого:

если нужно изменить, но не получить при этом дату, то только макросом (или добавлять, например, «_» перед данными, чтобы однозначно отнести их к тексту)
ИЛИ изменить региональные настройки даты на компе, чтобы Excel перестал воспринимать точку как разделитель для дат (попутно станет намного проще работать с «забугорными» числами ведь там разделитель десятичной части тоже точка)

Путь и скрин приведён для Win10 Pro

Изменено: Jack Famous08.02.2022 14:43:25

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

_Igor_61

Пользователь

Сообщений: 3007
Регистрация: 18.07.2016

#6

08.02.2022 15:17:18

Цитата
Jack Famous написал:
Excel всё равно преобразует в дату и плевать он хотел на текстовый формат

Сталкивался, согласен с выводом.
Поэтому стараюсь пользоваться наименьшими (т.е. простейшими способами) — что было MS-ом заложено в 2003 и ранее, проще макрос записать чем разбираться во всех предложениях производителей (это практически невозможно — предложений больше чем задач). Сейчас существует много новых функций и прибамбасов, но все это можно делать теми же старыми средствами (это про макросы и формулы). Другой вопрос — удобство пользования. Другая сторона удобства — новые плюшки создают новые проблемы (в основном конечно типа «почему в инсте у меня буквы такие, а в Excel другого цвета, или «почему на моем компе с 365 работает, а на других компах не работает»).
Артем, отсюда вывод: нужно изучать возможности приложений, т.к. один ответ ответ с форума, который выполняет одну конкретную озвученную в теме задачу совсем не означает, что в других условиях он будет полезен  :)  ИМХО

 

Msi2102

Пользователь

Сообщений: 3137
Регистрация: 31.03.2014

#7

08.02.2022 16:04:56

Цитата
Jack Famous написал:
если нужно изменить, но не получить при этом дату, то только макросом (или добавлять, например, «_» перед данными, чтобы однозначно отнести их к тексту

Есть ещё вариант, выделяем столбец в Excel —>Ctrl+C, открываем в Word —> Ctrl+V, —> Ctrl+H с запятой на точку, —>Ctrl+C, возвращаемся в Excel, меняем формат столбца на Текстовый и вставляем только значения. И чудо!!!

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#8

08.02.2022 16:16:50

Цитата
Msi2102: меняем формат столбца на Текстовый и вставляем только значения. И чудо!!!

чудес не бывает. Взрослый дядя, а всё верите  :)
Специальная вставка значений в «подготовленный» столбец всегда работала и необязательно менять в ворде — тут и простой блокнот подойдёт
Только дело в том, что способ этот не назвать быстрым и куда проще (как мне кажется) попросить макрос в пару строк кода для постоянного применения, ну или изменить регионалки, как сделал я у себя

Изменено: Jack Famous08.02.2022 16:17:16

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Артём Москвитин

Пользователь

Сообщений: 46
Регистрация: 06.02.2021

#9

08.02.2022 16:22:46

Цитата
написал:
Итого: если нужно изменить, но не получить при этом дату, то только макросом (или добавлять, например, «_» перед данными, чтобы однозначно отнести их к тексту)

Макрос случаем не знаете? Макрос который я выложил он работает, но почему то с этим прайсом не хочет!  

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#10

08.02.2022 16:32:52

Цитата
Артём Москвитин: Макрос случаем не знаете?

ещё как знаю — как раз писал, раз сказал
Сделал не «в лоб», а как положено, поэтому получилось не в «пару строк»  :D

Макрос для выделенного диапазона. Поддерживает несколько областей

Принцип:

цикл по всем областям выделенного диапазона; если в области хоть в одной ячейке есть запятая, то меняет формат всей области на текстовый и вставляет значения всей области (заменив перед этим нужные, разумеется) в «подготовленное место»
Менять формат выборочно для каждой нужной ячейки будет заметно дольше по времени

Можно, конечно, ещё выяснять кодом, какие разделители допустимы для даты на устройстве — может и формат менять не придётся, но тогда ещё больше кода будет, да и не для вашего случая  :)

Изменено: Jack Famous08.02.2022 16:42:40

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

_Igor_61

Пользователь

Сообщений: 3007
Регистрация: 18.07.2016

Артем, Вы выложили одну строчку кода а файл xlsx, в таких файлах макросы не живут. Если действительно хотите решить задачу — покажите в файле xlsm что именно и где не так. Не исключено, что дело не в точках и запятых. Если проблема в точках и запятых — внимательно прочитайте #2. Если не поможет — рассказывайте и показывайте что и как не получается. Если уж работаете с макросами, то не исключено, что что-то на проблемный столбец влияет

 

Артём Москвитин

Пользователь

Сообщений: 46
Регистрация: 06.02.2021

#12

08.02.2022 16:39:43

Цитата
написал:
ещё как знаю — как раз писал, раз сказал

Благодарю Вас, Спасибо большое, всё работает! Кучу времени сэкономили )))

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

Артём Москвитин, пожалуйста — обращайтесь  ;)

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Msi2102

Пользователь

Сообщений: 3137
Регистрация: 31.03.2014

#14

08.02.2022 17:00:11

Цитата
Jack Famous написал:
Взрослый дядя, а всё верите

Я ж это не для Вас пишу, что чудо, а чудо для многих по ту сторону экрана, которые сидят и в панике пытаются, что-то сделать, а на форуме никто не отвечает или вставили макрос, один раз попользовались и забыли где он лежит и всё, нужно заново тему создавать на форуме, ведь искать старую никто не будет. А копипастить умеют большее количество людей.

Цитата
Jack Famous написал:
Только дело в том, что способ этот не назвать быстрым и куда проще (как мне кажется)

Проще именно для Вас, но не для пользователя, который не знает, что с этим макросом делать и куда его вставлять.

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#15

08.02.2022 17:19:16

Цитата
Msi2102: Проще именно для Вас, но не для пользователя, который не знает, что с этим макросом делать и куда его вставлять

всё он знает — вы вообще читаете тему?  :D

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Msi2102

Пользователь

Сообщений: 3137
Регистрация: 31.03.2014

#16

08.02.2022 17:27:04

Цитата
Jack Famous написал: вы вообще читаете тему?

А Вы? Первым предложил копипастить Ігор Гончаренко, я лишь предложил вариант который сработает

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#17

08.02.2022 17:53:14

Цитата
Msi2102: Первым предложил копипастить  Ігор Гончаренко

да что вы говорите — ну почитайте ещё раз  :D

#2

#4

и да — выполнить макрос, который мгновенно выдаст результат куда проще, чем копипастить данные между приложениями и производить замены руками  ;)

Изменено: Jack Famous08.02.2022 17:56:20

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Msi2102

Пользователь

Сообщений: 3137
Регистрация: 31.03.2014

#18

08.02.2022 18:14:57

Цитата
Msi2102 написал:
Первым предложил копипастить

Ошибся, нужно было CTRL+H

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

Msi2102, это неважно на самом деле
Больше вариантов — всегда хорошо  :)
Важно было поправить насчёт нюансов замены

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Anchoret

Пользователь

Сообщений: 1059
Регистрация: 01.01.1970

Anchoret

#20

09.02.2022 03:34:00

Jack Famous, для обхода Selection Areas не нужны.
В качестве примера:

Код
Sub aaa()
Dim RR As Range
Selection.Parent.UsedRange.Interior.Color = xlNone
For Each RR In Selection.Cells
  Debug.Print RR: RR.Interior.Color = vbYellow
Next
End Sub
 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#21

09.02.2022 08:18:59

Цитата
Anchoret: для обхода Selection Areas не нужны

спасибо — я в курсе))
Просто мой код на массивах, что даст заметный прирост в скорости, если в областях будет много ячеек

Поячеечный перебор — это как раз подход «в лоб»

Изменено: Jack Famous09.02.2022 08:19:42

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

Замена запятой на точку

Silver

Дата: Пятница, 29.01.2016, 07:59 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Всем привет.
необходим макрос замены запятой на точку.

Например дан такой текст

20,4
20,04
17,3
16,05
15,12

Необходимо что бы заменилась запятая на точку и получилось вот так

20.4
20.04
17.3
16.05
15.12

Простым поиск/замена получается вот такая картина

20.апр
20.апр
17.мар
16.май
15.дек

Нужно, чтоб была точка и то же самое количество знаков (как в примере и 20.4 и 20.04) и не важно какой это будет формат

 

Ответить

VIDEO56

Дата: Пятница, 29.01.2016, 08:06 |
Сообщение № 2

Группа: Проверенные

Ранг: Обитатель

Сообщений: 262


Репутация:

23

±

Замечаний:
0% ±


Excel 2010

Опа не правильный ответ!

К сообщению приложен файл:

4030377.jpg
(44.6 Kb)


Всем удачного дня!

Сообщение отредактировал VIDEO56Пятница, 29.01.2016, 08:11

 

Ответить

Silver

Дата: Пятница, 29.01.2016, 08:16 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

VIDEO56,
Да, я же говорю, что поиск/замена не дает результата, тк не нужен формат даты, нужно просто точка )))

 

Ответить

VIDEO56

Дата: Пятница, 29.01.2016, 08:30 |
Сообщение № 4

Группа: Проверенные

Ранг: Обитатель

Сообщений: 262


Репутация:

23

±

Замечаний:
0% ±


Excel 2010

Код

=ПОДСТАВИТЬ(D18;»,»;».»;1)

Попробуйте так
Вроде работает!


Всем удачного дня!

Сообщение отредактировал VIDEO56Пятница, 29.01.2016, 08:31

 

Ответить

китин

Дата: Пятница, 29.01.2016, 08:32 |
Сообщение № 5

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

Код

=ПОДСТАВИТЬ(A1;»,»;».»)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Silver

Дата: Пятница, 29.01.2016, 08:41 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

китин, VIDEO56,

Работает!

Но мне нужно несколько тысяч цифр переколопатить.

Скопировать формулу в соседнюю ячейку, а потом заменить новыми данными?
Или есть проще выход?

 

Ответить

VIDEO56

Дата: Пятница, 29.01.2016, 08:47 |
Сообщение № 7

Группа: Проверенные

Ранг: Обитатель

Сообщений: 262


Репутация:

23

±

Замечаний:
0% ±


Excel 2010

Потяните просто формулу на нужный диапазон. или скиньте пример файла


Всем удачного дня!

 

Ответить

Silver

Дата: Пятница, 29.01.2016, 08:50 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

VIDEO56,

просто нужно было в ту же самую ячейку данные записать.

Но все-равно огромное вам спасибо!
:D :D :D

 

Ответить

VIDEO56

Дата: Пятница, 29.01.2016, 08:53 |
Сообщение № 9

Группа: Проверенные

Ранг: Обитатель

Сообщений: 262


Репутация:

23

±

Замечаний:
0% ±


Excel 2010

Удачного дня!


Всем удачного дня!

 

Ответить

китин

Дата: Пятница, 29.01.2016, 09:44 |
Сообщение № 10

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

просто нужно было в ту же самую ячейку данные записать.

ну дык в соседней ячейке заменить зпт на тчк.потом скопировать и спецвставкой вставить куда надо


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

sv2014

Дата: Пятница, 29.01.2016, 16:21 |
Сообщение № 11

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

Silver, попробуйте функцию yyy в столбце D

[vba]

Код

Function yyy(t$)
With CreateObject(«VBScript.RegExp»): .Pattern = «,»
        If .test(t) Then yyy = .Replace(t, «.»)
    End With
End Function

[/vba]

 

Ответить

sv2014

Дата: Пятница, 29.01.2016, 16:41 |
Сообщение № 12

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

Silver, добавлю,макрос,заменяющий данные в столбце A на результат в столбце A

[vba]

Код

Sub example()
   Dim i&, x
   x = Range(«A1:A» & Range(«A» & Rows.Count).End(xlUp).Row).Value
     With CreateObject(«vbscript.regexp»): .Pattern = «,»
       For i = 1 To UBound(x)
        If .test(x(i, 1)) Then x(i, 1) = .Replace(x(i, 1), «.»)
       Next
    End With
  Range(«A1»).Resize(UBound(x), UBound(x, 2)).Value = x
End Sub

[/vba]

К сообщению приложен файл:

9543564.xls
(40.0 Kb)

 

Ответить

Кажется, это продолжение моего ответа на ваш предыдущий вопрос, но если это так, я думаю, вы неправильно поняли, что я имел в виду. Я взял ваш код и изменил его по своему предложению, но я его не проверял:

Public Sub VirgulaPunct()
Dim oRow As Range
Dim cell As Range
Dim i As Long, j As Long
Dim MyString As String
Dim aux As String

    Application.ScreenUpdating = False

    For i = Selection(Selection.Count).Row To Selection.Cells(1, 1).Row Step -1

        For j = Selection(Selection.Count).Column To Selection.Cells(1, 1).Column Step -1
            MyString = Cells(i, j).Value
            MyString = Replace(MyString, ",", ";+;", 1)
            MyString = Replace(MyString, ".", ",", 1)
            MyString = Replace(MyString, ";+;", ".", 1)
            Cells(i, j).Value = MyString
        Next j
    Next i
    Application.ScreenUpdating = True
End Sub

Итак, как я сказал в своем предыдущем ответе, я делаю 3 вызова Replace, но я делаю их для всей строки, а не для каждого символа в строке.

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

Like this post? Please share to your friends:
  • Vba excel если в тексте есть слово
  • Vba excel заменить все запятые
  • Vba excel если if счетесли
  • Vba excel замена части строки
  • Vba excel доступ к таблице