Переход на следующую строку word vba

Ksenya100

72 / 64 / 3

Регистрация: 13.05.2010

Сообщений: 349

1

25.03.2011, 18:20. Показов 17709. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

подскажите пожалста!!
в макросе прописываю перенось строки

PureBasic
1
ls_text = ls_text & vbCr & "ну и тут что-то не важно"

и в документе вместо переноса строки
появляются символы — маленькие квадратики со знаком вопроса внутри

(вместо vbCr писала vbCrLf…тож самое)

я вообще не очень про это знаю

подскажите, что писать надо!!



0



72 / 64 / 3

Регистрация: 13.05.2010

Сообщений: 349

29.03.2011, 18:52

 [ТС]

2

как выход — написала на новой строке новую переменную



0



Частенько бываю

749 / 330 / 42

Регистрация: 20.06.2007

Сообщений: 854

30.03.2011, 04:35

3

Используйте константы VB, например vbNewLine



0



72 / 64 / 3

Регистрация: 13.05.2010

Сообщений: 349

30.03.2011, 17:17

 [ТС]

4

Vlanib, попробовала
сейчас попытаюсь описать что получилось:
у меня в шаблоне (word) стоит переменная (которая должна быть в 2 строки)
если после нее есть пустая строка, то vbnewline срабатывает но естественно остается и пустая строка
вот так получается:

Код

название
дата
//пустая строка, которая мне не нужна

а если после docvariable строка содержит текст (опять же в шаблоне) (а именно так мне и надо) то «дата» на новую строку не переносится

что делать????



0



0 / 0 / 0

Регистрация: 14.11.2017

Сообщений: 7

10.06.2011, 13:51

5

Цитата
Сообщение от Ksenya100
Посмотреть сообщение

Vlanib, попробовала
сейчас попытаюсь описать что получилось:
у меня в шаблоне (word) стоит переменная (которая должна быть в 2 строки)
если после нее есть пустая строка, то vbnewline срабатывает но естественно остается и пустая строка
вот так получается:

Код

название
дата
//пустая строка, которая мне не нужна

а если после docvariable строка содержит текст (опять же в шаблоне) (а именно так мне и надо) то «дата» на новую строку не переносится

что делать????

пиши так:
название & Chr(11) & дата

и будет тебе счастье…



0



72 / 64 / 3

Регистрация: 13.05.2010

Сообщений: 349

16.01.2012, 10:59

 [ТС]

6

Zarubin, да, дейстаительно всё получилось, спасибо !!



0



  • Remove From My Forums
  • Question

  • I tried «rn» with no look. It simply inserts «rn» verbatim into the document. How do I send a newline character in VBA?

    Thanks!

    Sep

Answers

  • Sub ScratchMacro()
    ‘A quick macro scratch pad created by Greg Maxey
    ActiveDocument.Range.InsertAfter «Test» & Chr(11) & «Test»  ‘New line
    ActiveDocument.Range.InsertAfter «Test» & vbCr & «Test» ‘New paragraph
    End Sub

    «Sepoto» wrote in message news:9bff0bf2-f53d-4c04-97fa-f5b48a48e120@communitybridge.codeplex.com…

    I tried «rn» with no look. It simply inserts «rn» verbatim into the document. How do I send a newline character in VBA?

    Thanks!

    Sep


    Greg Maxey Please visit my website at: http://gregmaxey.mvps.org/word_tips.htm

    • Marked as answer by

      Wednesday, October 27, 2010 10:57 PM

Home / VBA / How to Add a New Line (Carriage Return) in a String in VBA

In VBA, there are three different (constants) to add a line break.

  1. vbNewLine
  2. vbCrLf
  3. vbLf

vbNewLine

vbNewLine inserts a newline character that enters a new line. In the below line of code, you have two strings combined by using it.

Range("A1") = "Line1" & vbNewLine & "Line2"

When you run this macro, it returns the string in two lines.

It returns the character 13 and 10 (Chr(13) + Chr(10)). You can use a code in the following way as well to get the same result.

Range("A1") = "Line1" & Chr(13) & Chr(10) & "Line2"

But when you use vbNewLine you don’t need to use CHAR function.

vbCrLf

vbCrLf constant stands for Carriage Return and Line feed, which means Cr moves the cursor to the starting of the line, and Lf moves the cursor down to the next line.

When you use vbCrLf within two string or values, like, you have in the following code, it inserts a new line.

Range("A1") = "Line1" & vbCrLf & "Line2"

vbLf

vbLf constant stands for line feed character, and when you use it within two strings, it returns line feed character that adds a new line for the second string.

Range("A1") = "Line1" & vbLf & "Line2"

If you want to add a new line while using the VBA MsgBox you can use any of the above three constants that we have discussed.

MsgBox "Line1" & vbNewLine & "Line2"
MsgBox "Line1" & vbCrLf & "Line2"
MsgBox "Line1" & vbLf & "Line2"

There’s also a constant vbCr that returns carriage return character that you can use to insert a new line in a message box.

MsgBox "Line1" & vbCr & "Line2"

vbCr won’t work if you want to enter a cell value until you apply wrap text to it.

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Популярные разделы 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. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.

    >
    Word: Переход на строку вниз?

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    08.08.06, 06:49

      Senior Member

      ****

      Рейтинг (т): 34

      Есть необходимость от найденного в «Вордовском» тексте символа спуститься на строку ниже и вставить содержимое TextBox’а

      Пытался делать так (спускаться):

      ExpandedWrap disabled

        Dim a as String * 10

        a = TextBox1.Text

        Selection.Find.ClearFormatting

        With Selection.Find

        .Text = «#1»

        .Replacement.Text = «»

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

        End With

        Selection.Find.Execute

        Selection.MoveDown Unit:=wdLine, Count:=1

        Selection.Text = a

      Это не работает . Вставляется в зависимости от положения курсора в Word’е.
      Надо чтобы начало нижней строки (на которую пререхожу) должно быть четко под началом найденных символов

      Сообщение отредактировано: bi-lya — 09.08.06, 13:05


      SV()



      Сообщ.
      #2

      ,
      09.08.06, 07:48

        Senior Member

        ****

        Рейтинг (т): 40

        Я так понял строкой ниже может быть всё что угодно: более короткая строка, более длинная, вообще пусто….

        Тут макрос должен «думать», как-то примерно так наверное:

        ExpandedWrap disabled

          Sub add_text (find_text as string, textbox As String)

          Dim line As Long

          Dim x As Double

          With Selection

          .Find.Execute find_text

          .MoveLeft

          ‘запоминаем строку

          line = .Information(wdFirstCharacterLineNumber)

          ‘запоминаем расстояние в мм от левого края до курсора

          x = .Information(wdHorizontalPositionRelativeToPage)

          ‘пытаемся двигаться вниз

          .MoveDown

          If line = .Information(wdFirstCharacterLineNumber) Then

              ‘не сдвинулись — пусто внизу

              ‘добавляем строку

              .EndKey

              .TypeParagraph

              ‘табуляция

              .ParagraphFormat.TabStops.Add x

              .TypeText Text:=vbTab + textbox

          Else

              ‘удалось сдвинуться, внизу есть строка

              If Abs(x — .Information(wdHorizontalPositionRelativeToPage)) < 4 Then ‘4 — примерно половина ширины самого широкого символа («ж») 12 шрифтом (вообще тута надо-б наверное что-то получше придумать)

                  ‘примерно попали под символ (ширина символов разная, длины в мм точно совпадать не должны я думаю)

                  ‘внизу более длинная строка

                  .TypeText Text:=textbox

              Else

                  ‘более короткая, и тогда мы уже в её конце

                  ‘добавляем метку табуляции

                  .ParagraphFormat.TabStops.Add x

                  .TypeText Text:=vbTab + textbox

              End If

          End If

          End With

          End Sub

        (100% что учтённые в процедуре 3 варианта не охватывают всех возможных случаев :ph34r: )

        Осталось поместить курсор в начало и вызвать

        ExpandedWrap disabled

          add_text «#1», TextBox1.Text

        Сообщение отредактировано: SV() — 09.08.06, 08:19


        bi-lya



        Сообщ.
        #3

        ,
        09.08.06, 10:46

          Senior Member

          ****

          Рейтинг (т): 34

          Цитата SV() @ 09.08.06, 07:48

          Я так понял строкой ниже может быть всё что угодно: более короткая строка, более длинная, вообще пусто….

          Точнее — в определенный участок строки ниже строки с найденным символом должно вставляться некоторое количество символов. Короче, это программка для вставки обоснований в смету. Если интересно, приведу кусок текста

          8 #1 Светильники с люминисцентным 6.000 372.59 2236 ….
          и лампами для общественных п шт. ——— ———
          омещений, потолочный с рассе ….
          ивателем цельным из оргстекл
          9 #1 Щитки распределительные встр 1.000 1623.40 1623 ….
          аиваемые УОЩВ-6 с автоматиче шт. ——— ——— ….
          скими выключателями ….

          Мне нужно вставить вместо #1 14 символов, под #1 14 символов, можно бы использовать еще одну строку. Саму програмку я вообще-то уже сделал, но в 14 символов много не вкатаешь, сметчицы просят еще добавить
          Да… Посмотрел в предпросмотре, все «лишние» пробелы удалились…. Но смысл, наверное, понятен. Смета состоит из «столбцов» (без ячеек и знаков табуляции), первый столбец (где «8 #1»)где-то 22 символа, второй — 30 и т.п


          SV()



          Сообщ.
          #4

          ,
          09.08.06, 11:18

            Senior Member

            ****

            Рейтинг (т): 40

            По моему здесь явно нужен Excel, а не Word :blink:


            bi-lya



            Сообщ.
            #5

            ,
            09.08.06, 11:46

              Senior Member

              ****

              Рейтинг (т): 34

              Цитата SV() @ 09.08.06, 11:18

              По моему здесь явно нужен Excel, а не Word :blink:

              Согласен. Но это выдают сметные программы — Барс в частности, поэтому приходиться приспосабливаться. Ваш вариант еще не пробовал, пытался передвижением влево MoveLeft’ом на следующую строку перебраться от найденного символа — то же :no: — не разобрался, как можно одновременно с заменой найденного символа вставить данные из другого TextBox’а перескакивая (не затирая) существующих символов в других «столбцах»


              SV()



              Сообщ.
              #6

              ,
              09.08.06, 14:07

                Senior Member

                ****

                Рейтинг (т): 40

                Цитата bi-lya @ 09.08.06, 11:46

                приходиться приспосабливаться

                Ни в коем случае! >:(

                Легче потратить день, два и написать конвертер из формата Барс в Excel и обратно, и забыть о проблеме, работая в Excel’e, чем каждый раз городить огород при возникновении любых, даже самых простых задач (в итоге потеряете гораздо больше времени).

                З.Ы. Глядя на приведенный пример записи мне вообще кажется, что написанный за пару часиков простенький макрос в Excel, который откроет там файл, и перегруппирует ячейки и будет конвертор. :yes:


                bi-lya



                Сообщ.
                #7

                ,
                12.08.06, 06:08

                  Senior Member

                  ****

                  Рейтинг (т): 34

                  Легче потратить день, два и написать конвертер из формата Барс в Excel и обратно
                  … написанный за пару часиков простенький макрос в Excel…
                  Конвертер — для меня это недостижимо ;)
                  А про макрос в экселе — не думаю, что там будет проще разобраться для меня — как я говорил, табуляции нет, поэтому даже не представляю, как можно это сделать
                  Я сейчас пытаюсь разобраться с Range — сначала нахожу заданную группу символов с подстановочными знаками, потом область выделенния (естественно без текста) пытаюсь переместить на строку ниже и уже туда вставить нужное. И ничего пока не получается!!! :wall:


                  SV()



                  Сообщ.
                  #8

                  ,
                  12.08.06, 22:34

                    Senior Member

                    ****

                    Рейтинг (т): 40

                    Ну в общем еще могу добавить, что ваша задача со смешениями сильно нестандартна, и простого решения в word’e не имеет. <_<

                    В любом случае удачи! ;)


                    bi-lya



                    Сообщ.
                    #9

                    ,
                    13.08.06, 05:38

                      Senior Member

                      ****

                      Рейтинг (т): 34

                      Должен с удовлетворением заявить, что все получилось. Использовал метод Range.Move & wdCharakter & Left c Right’ом. Спасибо всем принявшим участие!!! :lool:

                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                      0 пользователей:

                      • Предыдущая тема
                      • VB for Application
                      • Следующая тема

                      Рейтинг@Mail.ru

                      [ Script execution time: 0,0298 ]   [ 16 queries used ]   [ Generated: 16.04.23, 14:55 GMT ]  

                      • Remove From My Forums
                      • Question

                      • Hi VBA folks

                        I am trying to code a little macro which is giving me a hard time coding it the right way, this are the things I have to do:

                        1) Insert a  new section at the end of the document

                        2)type the first sentence of each section on separate lines in the newly added section

                        for this I pieced together the following code:

                        ActiveDocument.Sections.Add Start:=wdSectionNewPage
                        
                        For Each ss In ActiveDocument.Sections
                            ActiveDocument.Sections(ActiveDocument.Sections.count).Range.Text = ss.Range.Sentences(1).Range.Text
                           Selection.MoveDown unit:=wdLine, count:=3, Extend:=wdMove
                        Next ss
                        

                        however, it seems like word is just overriding the text on the same line and not moving down a given number of lines to type the next paragraph

                        I know that the problem is within the following part, could someone please help me correct this. thanks so much guys

                        Selection.MoveDown unit:=wdLine, count:=3, Extend:=wdMove<br/>
                        

                      Answers

                        • Proposed as answer by

                          Saturday, January 28, 2012 4:04 AM

                        • Marked as answer by
                          danishani
                          Wednesday, February 1, 2012 5:05 AM
                      • Use:

                        Selection.EndKey wdStory
                        Selection.InsertBreak wdSectionBreakNextPage
                        With ActiveDocument
                            With .Sections(.Sections.Count).Range
                                For i = 1 To ActiveDocument.Sections.Count — 1
                                    .InsertAfter ActiveDocument.Sections(i).Range.Sentences(1).Text & vbCr
                                Next i
                            End With
                        End With


                        Doug Robbins — Word MVP dkr[atsymbol]mvps[dot]org

                        • Proposed as answer by
                          danishani
                          Saturday, January 28, 2012 4:04 AM
                        • Marked as answer by
                          danishani
                          Wednesday, February 1, 2012 5:05 AM

                      Понравилась статья? Поделить с друзьями:
                    • Переход на последняя ячейка в excel
                    • Переход на последнюю заполненную строку в excel
                    • Переход на последний лист в excel
                    • Переход на нужную ячейку в excel
                    • Переход на нужную страницу в word