Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2010, 20:50   #11
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Например, так:
Код:

Sub test()
    txt = "П р и в е т  к а к  д е л а"
    txt = Replace(txt, "  ", "%%%")
    txt = Replace(txt, " ", "")
    txt = Replace(txt, "%%%", " ")
    MsgBox txt, vbInformation
End Sub
Или чуть покороче:
Код:

Sub test()
    [a1] = Replace(Replace(Replace([a1], "  ", "%%%"), " ", ""), "%%%", " ")
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 02.10.2010, 23:22   #12
sam00
Пользователь
 
Аватар для sam00
 
Регистрация: 22.09.2010
Сообщений: 21
По умолчанию

Спасибо! Именно второй вариант и подошел
sam00 вне форума Ответить с цитированием
Старый 09.11.2010, 00:06   #13
maksimla
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 10
По умолчанию неполучается с mid

Dim s As String, s1 As String
Dim i As Integer
s = [a4].Value
For i = 1 To Len(s)
s1 = s1 & Mid(s, i, 1) & " "
Next
[a4].Value = s1
а тут прибавляются
чего то не получается сделать чтобы пробелы удалялись с помощью mid
maksimla вне форума Ответить с цитированием
Старый 03.05.2013, 12:23   #14
Wer666
 
Регистрация: 20.08.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Не раз сталкивался с проблемой символа [пробел].
Кроме кода символа = 160 (что редко встречается), в таблице ANSI есть еще и код символа = 32. Нужно бы контролировать оба.
А макрос можно немного упростить:
Код:
Sub замена2()
    Application.ScreenUpdating = False: ActiveSheet.UsedRange.Replace What:=" ", Replacement:=""
End Sub
А как осуществить поиск пробелов начиная только со второй строки?
Wer666 вне форума Ответить с цитированием
Старый 03.05.2013, 14:02   #15
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 906
По умолчанию

В коде указано только, как получить доступ к нужному диапазону ячеек.
Дальше внесите изменения такие, как вам нужно.
Код:
Sub Procedure_1()

    Dim myRange As Excel.Range
    
    '1. Даём диапазону ячеек, где есть данные или форматирование
        'VBA-имя "myRange".
    Set myRange = ActiveSheet.UsedRange
    
    '2. Смещаемся вниз на одну строку.
    'Здесь для задачи из сообщения #14 можно остановиться и дальше не делать,
        'что предложено ниже в коде.
    Set myRange = myRange.Offset(1)
    
    '3. Убираем лишнюю нижнюю строку.
    Set myRange = myRange.Resize(myRange.Rows.Count - 1, myRange.Columns.Count)
    
    '4. В диапазоне "myRange" осуществите замену.
    
End Sub
Скрипт вне форума Ответить с цитированием
Старый 03.05.2013, 16:08   #16
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Или так:
Код:
Set myRange = Intersect(ActiveSheet.UsedRange, Rows("2:" & Rows.Count))
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 03.05.2013, 16:26   #17
Wer666
 
Регистрация: 20.08.2012
Сообщений: 7
По умолчанию

Не подходит( Все равно удаляет пробелы с первой строки(
Можете привести полный код с учетом того что пробелы должны удаляться только со второй строки?

Последний раз редактировалось Wer666; 03.05.2013 в 18:43.
Wer666 вне форума Ответить с цитированием
Старый 03.05.2013, 20:24   #18
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Следующий код удалит пробелы во всех ячейках активного рабочего листа, за исключением ячеек 1-ой строки.
Код:
Sub замена3()
    Application.ScreenUpdating = False
    Intersect(ActiveSheet.UsedRange, Rows("2:" & Rows.Count)).Replace What:=" ", Replacement:=""
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 03.05.2013, 20:36   #19
Wer666
 
Регистрация: 20.08.2012
Сообщений: 7
По умолчанию

SAS888, спасибо огромное!!)))) Все получилось))!
Wer666 вне форума Ответить с цитированием
Старый 04.05.2013, 15:50   #20
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 906
По умолчанию

Свежим взглядом.

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

Код:
Sub Procedure_1()

    Dim myRange As Excel.Range
    
    '1. Даём диапазону ячеек, где есть данные или форматирование
        'VBA-имя "myRange".
    Set myRange = ActiveSheet.UsedRange
    
    '2. Даём VBA-имя "myRange" тому же диапазону ячеек, но
        'без последней строки.
    Set myRange = myRange.Resize(myRange.Rows.Count - 1, myRange.Columns.Count)
    
    '3. Смещаемся вниз на одну строку.
    Set myRange = myRange.Offset(1)
    
    '4. В диапазоне "myRange" осуществите замену.
    
End Sub
Скрипт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество пробелов до конца строки Qv_1 Microsoft Office Word 8 01.06.2009 19:58
Аналог функции Trim-удаление лишних пробелов в начале и в конце передаваемой строки GULINA Помощь студентам 6 23.05.2009 15:07
Удаление пробелов Иван 883 Помощь студентам 1 20.04.2009 22:23
Удаление лишних пробелов. Ввод/вывод в файл. Иван 883 Помощь студентам 13 31.03.2009 19:39
Строки(удаление пробелов). C language SuccEssoR Помощь студентам 4 15.01.2009 17:13