[VB]Убрать лишние пробелы

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Чуччи
Сообщения: 5
Зарегистрирован: 05 мар 2011, 14:11

Задача: Убрать лишние пробелы во введенной строке
помогите( :(
district
Сообщения: 56
Зарегистрирован: 13 ноя 2007, 23:03
Откуда: Москва

'рисовал в свое время макрос убирающий пробелы в самом начале выражения, в самом конце плюс двойные пробелы превращающий в одинарные. Посмотрите, может поможет.

Public soderzhanije as string

Dim soderzhanije1 As String

soderzhanije1 = ""

labela:
If soderzhanije = "" Then GoTo labele
'удаляю все двойные пробелы
soderzhanije1 = soderzhanije
soderzhanije = Replace(soderzhanije, " ", " ")
'перепроверяю на всякий случай
If soderzhanije <> soderzhanije1 Then
soderzhanije1 = ""
GoTo labela
End If
soderzhanije1 = ""
'если первый символ есть пробел - стираю и начинаю процедуру заново
If Left(soderzhanije, 1) = " " Then
'MsgBox (soderzhanije)
soderzhanije = Right(soderzhanije, CStr(Len(soderzhanije)) - 1)
'MsgBox (soderzhanije)
If soderzhanije <> "" Then
GoTo labela
End If
'если последний символ есть пробел - стираю и начинаю процедуру заново
ElseIf Right(soderzhanije, 1) = " " Then
soderzhanije = Left(soderzhanije, CStr(Len(soderzhanije)) - 1)
End If
labele:

End Sub
Аватара пользователя
AlexZZZ
Сообщения: 237
Зарегистрирован: 01 июн 2007, 00:27
Откуда: Москва и область

Если пробелов не больше 6 подряд, то можно так:

Код: Выделить всё

Function RemoveSpaces(Str As String) As String
    RemoveSpaces = Trim(Replace(Replace(Str, "   ", " "), "  ", " "))
End Function
Если больше, ну, принцип понятен...

А если код работает в Excel, то совсем просто:

Код: Выделить всё

Function RemoveSpaces(Str As String) As String
    RemoveSpaces = Application.WorksheetFunction.Trim(Str)
End Function
SAS888
Сообщения: 156
Зарегистрирован: 16 янв 2008, 08:28

Не зависимо от количества пробелов, идущих подряд, можно использовать функцию:

Код: Выделить всё

Function RemoveSpaces(iStr As String) As String
    Do While InStr(iStr, "  ") <> 0: iStr = Replace(iStr, "  ", " "): Loop
    RemoveSpaces = Trim(iStr)
End Function
Ответить