На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА 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 Кбайт, скачиваний: 195)
    Но столкнулся с проблемой при взятии текстового значения из ячейки таблицы и последующем добавлении возникает ошибка (см. скриншот).
    Прикреплённый файлПрикреплённый файл________________.JPG (6,06 Кбайт, скачиваний: 195)
    из за того что в конце есть лишние пробелы. При отладке программы в конце строки отображаются какие то квадраты (см. скрин).
    Прикреплённый файлПрикреплённый файл________________.JPG (6,06 Кбайт, скачиваний: 195)
    Я использовал функцию удаления пробелов в конце строки 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 -
      Йто символы конца яйейки.
      Можно тупо удалить 2 символа:
      ExpandedWrap disabled
        shortstring = Left(shortstring, Len(shortstring) - 2)
      Сообщение отредактировано: MIF -
        Цитата MIF @
        Йто символы конца яйейки.
        Можно тупо удалить 2 символа:
        ExpandedWrap disabled
          shortstring = Left(shortstring, Len(shortstring) - 2)

        да просто не в каждой строке есть эти символы, там где 2 строки в ячейке таблицы, почему то их нет
          Тогда проанализировать что в конце строки
          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

            А что значит это объявление
              Значение, найденное в первом сниппете.
                Окончание ячейки - CHR(7).
                Значение ячейки, как я вижу - одна строка. Так что
                ExpandedWrap disabled
                  shortstring = Split(Replace(Selection.text, CHR(7), ""), CHR(13))(0)

                Уберётся и символ завершения ячейки, и, при наличии, хвостовые переводы строк.
                  Цитата 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
                    Цитата Fellinggood @
                    вот как получилось

                    Не, вот нафига нужны эти циклы с флагом proverka, если всё то же самое делает одно несложное выражение?
                      Цитата Akina @
                      Цитата Fellinggood @
                      вот как получилось

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

                      да можно было по другому, просто уже не хотел запариваться так как уже почти все дописал в варианте предложенном выше
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0557 ]   [ 19 queries used ]   [ Generated: 29.03.24, 06:24 GMT ]