Ksenya100 72 / 64 / 3 Регистрация: 13.05.2010 Сообщений: 349 |
||||
1 |
||||
25.03.2011, 18:20. Показов 17709. Ответов 5 Метки нет (Все метки)
подскажите пожалста!!
и в документе вместо переноса строки (вместо 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, попробовала Код название дата //пустая строка, которая мне не нужна а если после docvariable строка содержит текст (опять же в шаблоне) (а именно так мне и надо) то «дата» на новую строку не переносится что делать????
0 |
0 / 0 / 0 Регистрация: 14.11.2017 Сообщений: 7 |
|
10.06.2011, 13:51 |
5 |
Vlanib, попробовала Код название дата //пустая строка, которая мне не нужна а если после docvariable строка содержит текст (опять же в шаблоне) (а именно так мне и надо) то «дата» на новую строку не переносится что делать???? пиши так: и будет тебе счастье…
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
-
Marked as answer by
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.
- vbNewLine
- vbCrLf
- 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.
|
|
|
Популярные разделы FAQ: Общие вопросы
Особенности VBA-кода
Оптимизация VBA-кода
Полезные ссылки
1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость — сестра таланта.
3. Не забывайте использовать теги [сode=vba] …текст программы… [/code] для выделения текста программы подсветкой!
4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.
Word: Переход на строку вниз?
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Senior Member Рейтинг (т): 34 |
Есть необходимость от найденного в «Вордовском» тексте символа спуститься на строку ниже и вставить содержимое TextBox’а Пытался делать так (спускаться): 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() |
|
Senior Member Рейтинг (т): 40 |
Я так понял строкой ниже может быть всё что угодно: более короткая строка, более длинная, вообще пусто…. Тут макрос должен «думать», как-то примерно так наверное: 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 варианта не охватывают всех возможных случаев Осталось поместить курсор в начало и вызвать add_text «#1», TextBox1.Text Сообщение отредактировано: SV() — 09.08.06, 08:19 |
bi-lya |
|
Senior Member Рейтинг (т): 34 |
Цитата SV() @ 09.08.06, 07:48 Я так понял строкой ниже может быть всё что угодно: более короткая строка, более длинная, вообще пусто…. Точнее — в определенный участок строки ниже строки с найденным символом должно вставляться некоторое количество символов. Короче, это программка для вставки обоснований в смету. Если интересно, приведу кусок текста 8 #1 Светильники с люминисцентным 6.000 372.59 2236 …. Мне нужно вставить вместо #1 14 символов, под #1 14 символов, можно бы использовать еще одну строку. Саму програмку я вообще-то уже сделал, но в 14 символов много не вкатаешь, сметчицы просят еще добавить |
SV() |
|
Senior Member Рейтинг (т): 40 |
По моему здесь явно нужен Excel, а не Word |
bi-lya |
|
Senior Member Рейтинг (т): 34 |
Цитата SV() @ 09.08.06, 11:18 По моему здесь явно нужен Excel, а не Word
Согласен. Но это выдают сметные программы — Барс в частности, поэтому приходиться приспосабливаться. Ваш вариант еще не пробовал, пытался передвижением влево MoveLeft’ом на следующую строку перебраться от найденного символа — то же |
SV() |
|
Senior Member Рейтинг (т): 40 |
Цитата bi-lya @ 09.08.06, 11:46 приходиться приспосабливаться Ни в коем случае! Легче потратить день, два и написать конвертер из формата Барс в Excel и обратно, и забыть о проблеме, работая в Excel’e, чем каждый раз городить огород при возникновении любых, даже самых простых задач (в итоге потеряете гораздо больше времени). З.Ы. Глядя на приведенный пример записи мне вообще кажется, что написанный за пару часиков простенький макрос в Excel, который откроет там файл, и перегруппирует ячейки и будет конвертор. |
bi-lya |
|
Senior Member Рейтинг (т): 34 |
Легче потратить день, два и написать конвертер из формата Барс в Excel и обратно |
SV() |
|
Senior Member Рейтинг (т): 40 |
Ну в общем еще могу добавить, что ваша задача со смешениями сильно нестандартна, и простого решения в word’e не имеет. В любом случае удачи! |
bi-lya |
|
Senior Member Рейтинг (т): 34 |
Должен с удовлетворением заявить, что все получилось. Использовал метод Range.Move & wdCharakter & Left c Right’ом. Спасибо всем принявшим участие!!! |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- VB for Application
- Следующая тема
[ 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
-
Proposed as answer by
-
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
-
Proposed as answer by