На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Организуем VBA-FAQ! Если у Вас есть предложения, выскажитесь здесь: Пишем FAQ, интересно Ваше мнение
Популярные разделы FAQ:    user posted image Общие вопросы    user posted image Особенности VBA-кода    user posted image Оптимизация VBA-кода    user posted image Полезные ссылки

1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость - сестра таланта.
3. Не забывайте использовать теги [сode=vba] ...текст программы... [/code] для выделения текста программы подсветкой!
4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.
Модераторы: Old Bat, MIF
  
> Как убрать лишние символы в конце строки взятой из ячейки таблицы word
Здраствуйте. Хотел создать программу автоматического добавления автозамен из таблицы. Прикреплённый файлПрикреплённый файл________________.JPG (6,06 Кбайт, скачиваний: 13)
Но столкнулся с проблемой при взятии текстового значения из ячейки таблицы и последующем добавлении возникает ошибка (см. скриншот).
Прикреплённый файлПрикреплённый файл________________.JPG (6,06 Кбайт, скачиваний: 13)
из за того что в конце есть лишние пробелы. При отладке программы в конце строки отображаются какие то квадраты (см. скрин).
Прикреплённый файлПрикреплённый файл________________.JPG (6,06 Кбайт, скачиваний: 13)
Я использовал функцию удаления пробелов в конце строки Trim(), но оне не убирает данные символы. Не подскажете что делать?

ExpandedWrap disabled
    Sub Макрос3()
    Dim longstring, shortstring, longs, shorts As String
    Dim iCell As Range
    Dim i As Integer
    Dim j As Integer
    Dim N As Integer
    Dim Num As Integer
     
    N = 58
     
    For i = 12 To N
        ActiveDocument.Tables(1).Cell(i, 1).Select
        shortstring = Selection.text
        shorts = RTrim(shortstring)
        ActiveDocument.Tables(1).Cell(i, 2).Select
        longstring = Selection.text
        AutoCorrect.Entries.Add Name:=shortstring, Value:=longstring
    Next i
    End Sub
Сообщение отредактировано: Fellinggood -
[COLOR=blue]К чему все это? Зачем тебе жить?[/Color = blue]
Йто символы конца яйейки.
Можно тупо удалить 2 символа:
ExpandedWrap disabled
    shortstring = Left(shortstring, Len(shortstring) - 2)
Сообщение отредактировано: MIF -
Мои религиозные убеждения не позволяют мне комментировать код.
Моё мировоззренье таково: в программе комментария ни одного!
Цитата MIF @
Йто символы конца яйейки.
Можно тупо удалить 2 символа:
ExpandedWrap disabled
    shortstring = Left(shortstring, Len(shortstring) - 2)

да просто не в каждой строке есть эти символы, там где 2 строки в ячейке таблицы, почему то их нет
[COLOR=blue]К чему все это? Зачем тебе жить?[/Color = blue]
Тогда проанализировать что в конце строки
ExpandedWrap disabled
    Dim ascii As Long
     
    ascii = Asc(Right(shortstring, 1))


и удалять только когда они есть
ExpandedWrap disabled
    Const CHAR_TO_DELETE As Long = Your_Value
     
    If Len(shortstring) > 0 Then
    If Asc(Right(shortstring, 1)) = CHAR_TO_DELETE Then
    shortstring = Left(shortstring, Len(shortstring) - 1)
    End If
    End If
Сообщение отредактировано: MIF -
Мои религиозные убеждения не позволяют мне комментировать код.
Моё мировоззренье таково: в программе комментария ни одного!
Цитата MIF @
Тогда проанализировать что в конце строки
ExpandedWrap disabled
    Dim ascii As Long
     
    ascii = Asc(Right(shortstring, 1))


и удалять только когда они есть
ExpandedWrap disabled
    Const CHAR_TO_DELETE As Long = Your_Value
     
    If Len(shortstring) > 0 Then
    If Asc(Right(shortstring, 1)) = CHAR_TO_DELETE Then
    shortstring = Left(shortstring, Len(shortstring) - 1)
    End If
    End If

спасибо буду пробовать

Добавлено
Цитата Fellinggood @
Цитата MIF @

и удалять только когда они есть
ExpandedWrap disabled
    Const CHAR_TO_DELETE As Long = Your_Value

А что значит это объявление
[COLOR=blue]К чему все это? Зачем тебе жить?[/Color = blue]
Значение, найденное в первом сниппете.
Мои религиозные убеждения не позволяют мне комментировать код.
Моё мировоззренье таково: в программе комментария ни одного!
Окончание ячейки - CHR(7).
Значение ячейки, как я вижу - одна строка. Так что
ExpandedWrap disabled
    shortstring = Split(Replace(Selection.text, CHR(7), ""), CHR(13))(0)

Уберётся и символ завершения ячейки, и, при наличии, хвостовые переводы строк.
Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
Есть претензии ко мне как к участнику? да ради бога.
Не нравятся мои ответы? не читайте их.
В общем, берегите себя. Нервные клетки не восстанавливаются.
Цитата Akina @
Окончание ячейки - CHR(7).
Значение ячейки, как я вижу - одна строка. Так что
ExpandedWrap disabled
    shortstring = Split(Replace(Selection.text, CHR(7), ""), CHR(13))(0)

Уберётся и символ завершения ячейки, и, при наличии, хвостовые переводы строк.

Спасибо

Добавлено
Спасибо всем, вот как получилось
ExpandedWrap disabled
    Sub Макрос3()
    '
    ' Макрос3 Макрос
    ' Макрос записан 15.10.2020 User
     
    Dim longstring, shortstring, longs, shorts As String
    Dim iCell As Range
    Dim i As Integer
    Dim j As Integer
    Dim N As Integer
    Dim Num As Integer
    Dim ascii As Long
    Const CHAR_TO_DELETE As Long = 7 '7 означает ascii код символа "конца строки - квадратик" найденный через функцию ascii = Asc(Right(shortstring, 1))
    Dim proverka As Integer
     
    N = 58
     
    For i = 12 To N
     
        proverka = 1 'Условие проверки, что в конце строки нет символа "конец строки"
     
        ActiveDocument.Tables(1).Cell(i, 1).Select
        shortstring = Selection.text
        
        ascii = Asc(Right(shortstring, 1)) 'Функция Asc Определяет ascii код символа
        ' В нашем случае это код символа "конец строки - квадратик" = 7 если смотреть через отладчик на строку таблицы
        'функция Right(shortstring, 1) определяет последний символ справа строки shortstring и возвращает его в строковой переменной
        Do While proverka = 1
            If Len(shortstring) > 0 Then 'Если длина строки больше 0
                proverka = 0
                ascii = Asc(Right(shortstring, 1))
                If Asc(Right(shortstring, 1)) = CHAR_TO_DELETE Or Asc(Right(shortstring, 1)) = 13 Then  'Right(shortstring, 1) берет последний символ строки
                    shortstring = Left(shortstring, Len(shortstring) - 1) 'Возвращает строку начиная с левого символа длиной
                    'символов Len(shortstring) - 1
                    proverka = 1
                End If
            End If
        Loop
        
        proverka = 1
        
        ActiveDocument.Tables(1).Cell(i, 2).Select
        longstring = Selection.text
        
        Do While proverka = 1
            If Len(longstring) > 0 Then 'Если длина строки больше 0
                proverka = 0
                If Asc(Right(longstring, 1)) = CHAR_TO_DELETE Or Asc(Right(longstring, 1)) = 13 Then 'Right(shortstring, 1) берет последний символ строки
                    longstring = Left(longstring, Len(longstring) - 1) 'Возвращает строку начиная с левого символа длиной
                    'символов Len(shortstring) - 1
                    proverka = 1
                End If
            End If
        Loop
        
        AutoCorrect.Entries.Add Name:=shortstring, Value:=longstring
        With AutoCorrect
            .CorrectInitialCaps = False
            .CorrectSentenceCaps = False
            .CorrectDays = False
            .CorrectCapsLock = False
            .ReplaceText = True
            .ReplaceTextFromSpellingChecker = False
            .CorrectKeyboardSetting = False
            .DisplayAutoCorrectOptions = True
            .CorrectTableCells = False
        End With
    Next i
    'shortstring = Split(Replace(Selection.text, Chr(7), ""), Chr(13))(0) - замена символа конца строки на пустой символ (стирание
    'то есть стираем лишние символы конца строки
    End Sub
[COLOR=blue]К чему все это? Зачем тебе жить?[/Color = blue]
Цитата Fellinggood @
вот как получилось

Не, вот нафига нужны эти циклы с флагом proverka, если всё то же самое делает одно несложное выражение?
Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
Есть претензии ко мне как к участнику? да ради бога.
Не нравятся мои ответы? не читайте их.
В общем, берегите себя. Нервные клетки не восстанавливаются.
Цитата Akina @
Цитата Fellinggood @
вот как получилось

Не, вот нафига нужны эти циклы с флагом proverka, если всё то же самое делает одно несложное выражение?

да можно было по другому, просто уже не хотел запариваться так как уже почти все дописал в варианте предложенном выше
[COLOR=blue]К чему все это? Зачем тебе жить?[/Color = blue]
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,1391 ]   [ 23 queries used ]   [ Generated: 20.10.20, 17:35 GMT ]