Здравствуйте, у меня возникла проблема с макросом, удаляющим пробелы и знаки препинания, кроме запятой из текстово-численных строк. Если в строке первой оказывается цифра, то макрос эту цифру удаляет. Прикладываю файл со своим макросом. Если не сложно, подскажите, как его мне подправить, чтобы ничего лишнего из строк не удалялось, кроме того что указано в массиве для удаления
Здравствуйте, у меня возникла проблема с макросом, удаляющим пробелы и знаки препинания, кроме запятой из текстово-численных строк. Если в строке первой оказывается цифра, то макрос эту цифру удаляет. Прикладываю файл со своим макросом. Если не сложно, подскажите, как его мне подправить, чтобы ничего лишнего из строк не удалялось, кроме того что указано в массиве для удаленияl-lisa
If IsNumeric(Mid(ss, 1, 1)) Then ss = Mid(ss, 2, Len(ss))
[/vba] Зачем она вообще была задумана? Зачем там вообще использовали словарь? Почему не сделать проще: [vba]
Код
Function Prov(ByVal s As String) Dim el, a ''Добавлять сюда в конец: "(", ")", "s" ) a = Array(" ", ",", ".", "-", "_", "+" _ , "*", "\", "/", "[", "]", "{", "}", "'" _ , ";", ":", "=", """", "(", ")") ''''''''''''''''''''' For Each el In a: s = Replace(s, el, ""): Next Prov = s End Function
[/vba]
Убрать строку [vba]
Код
If IsNumeric(Mid(ss, 1, 1)) Then ss = Mid(ss, 2, Len(ss))
[/vba] Зачем она вообще была задумана? Зачем там вообще использовали словарь? Почему не сделать проще: [vba]
Код
Function Prov(ByVal s As String) Dim el, a ''Добавлять сюда в конец: "(", ")", "s" ) a = Array(" ", ",", ".", "-", "_", "+" _ , "*", "\", "/", "[", "]", "{", "}", "'" _ , ";", ":", "=", """", "(", ")") ''''''''''''''''''''' For Each el In a: s = Replace(s, el, ""): Next Prov = s End Function
Function Prov$(ByVal txt$, Optional delim$ = " ") Dim regex As Object Set regex = CreateObject("vbscript.regexp") With regex .Global = True .IgnoreCase = True .MultiLine = True .Pattern = "([\.;:'=+_\-\!\?\&\(\)\/ ])" End With replacePunctuations = regex.Replace(txt, delim) Set regex = Nothing End Function
[/vba]
[vba]
Код
Function Prov$(ByVal txt$, Optional delim$ = " ") Dim regex As Object Set regex = CreateObject("vbscript.regexp") With regex .Global = True .IgnoreCase = True .MultiLine = True .Pattern = "([\.;:'=+_\-\!\?\&\(\)\/ ])" End With replacePunctuations = regex.Replace(txt, delim) Set regex = Nothing End Function
SkyPro, у вас имя функции Prov, а результат возвращается для replacePunctuations - будет ли работать? И не проще ли перечислить, что оставить? [vba]
Код
Private FReg As Object Public Function replacePunctuations(ByVal this As String) As String If FReg Is Nothing Then Set FReg = CreateObject("VBScript.RegExp") FReg.IgnoreCase = True FReg.Global = True: FReg.Pattern = "[^, \da-zёа-я]" End If replacePunctuations = FReg.Replace(this, "") End Function
[/vba]
SkyPro, у вас имя функции Prov, а результат возвращается для replacePunctuations - будет ли работать? И не проще ли перечислить, что оставить? [vba]
Код
Private FReg As Object Public Function replacePunctuations(ByVal this As String) As String If FReg Is Nothing Then Set FReg = CreateObject("VBScript.RegExp") FReg.IgnoreCase = True FReg.Global = True: FReg.Pattern = "[^, \da-zёа-я]" End If replacePunctuations = FReg.Replace(this, "") End Function