vbcr vba что это
Константы и перечисления (Visual Basic)
Visual Basic предоставляет разработчикам ряд предопределенных констант и перечислений. Константы хранят значения, которые остаются постоянными в ходе выполнения приложения. Перечисления — это удобный способ работать с наборами связанных констант и связывать постоянные значения с именами.
Константы
Константы условной компиляции
В следующей таблице перечислены стандартные константы, доступные для условной компиляции.
Константы печати и отображения
При вызове функций печати и отображения можно использовать в коде следующие константы вместо фактических значений.
Константа | Описание |
---|---|
vbCrLf | Сочетание символов возврата каретки и перевода строки. |
vbCr | Символ возврата каретки. |
vbLf | Символ перевода строки. |
vbNewLine | Символ новой строки. |
vbNullChar | Символ null. |
vbNullString | Не то же, что и строка нулевой длины («»); используется для вызова внешних процедур. |
vbObjectError | Номер ошибки. Ошибки, определенные пользователем, должны иметь номер, превосходящий это число. Пример: Err.Raise(Number) = vbObjectError + 1000 |
vbTab | Символ табуляции. |
vbBack | Символ Backspace. |
vbFormFeed | Не используется в Microsoft Windows. |
vbVerticalTab | Не полезно в Microsoft Windows. |
Перечисления
В следующей таблице перечислены и описаны перечисления, предоставляемые Visual Basic.
VBA Excel. Перенос кода процедуры и текста на новую строку
Перенос части кода одного выражения VBA Excel на другую строку. Объединение нескольких операторов в одной строке. Программный перенос текста на новую строку.
Перенос части выражения на новую строку
Деление длинного оператора на части улучшит его читаемость, сделает код процедуры более наглядным и компактным, не позволит ему уходить за пределы видимого экрана справа.
Переносимые на новые строки части кода одного выражения разделяются символом нижнего подчеркивания (_), который ставится обязательно после пробела. Этот символ указывает компилятору VBA Excel, что ниже идет продолжение текущей строки.
Пример 1
Процедуры без переноса и с переносом части кода операторов:
Вы можете скопировать код Примера 1 и проверить его работоспособность. В обоих случаях информационное окно MsgBox покажет одинаковый результат.
Иногда пишут, что для переноса кода добавляется пробел с символом подчеркивания. Так легче запомнить и не забыть, что перед знаком подчеркивания обязательно должен быть пробел. Но на самом деле, как видите из примера выше, пробелы уже есть в исходном коде, и мы добавили только символы подчеркивания.
Объединение операторов в одной строке
Множество коротких выражений в коде VBA Excel можно объединить в одной строке. Для этого используется символ двоеточия с пробелом «: », который указывает компилятору, что за ним идет следующий оператор.
Пример 2
Процедуры без объединения и с объединением операторов:
Differences between the constants vbCr, vbLf & vbCrLf
antaeusguy
Board Regular
I tried the constants vbCr, vbLf & vbCrLf in a MsgBox:
MsgBox «Hi» & vbCr & «There!»
MsgBox «Hi» & vbLf & «There!»
MsgBox «Hi» & vbCrLf & «There!»
and it appears to have the same results (the word «There!» appears on a new paragraph).
However, there could be differences in their functions, between Carriage return and Linefeed.
I wish to know the differences between Carriage return and Linefeed (I tried to look in Excel Help but there were no explaination what is a Carriage return and a Linefeed, or a combination of both.
Thank you in advance for your help!
Excel Facts
Legend
Hi. In a MsgBox they all do the same thing as does
MsgBox «Hi» & vbNewLine & «There!»
but you may see a difference if you write to a cell using those VB characters.
antaeusguy
Board Regular
Hi VoG, thanks for your reply.
Indeed I tried vbCr and vbLf writing to a cell value and I could see the differences.
vbCr & vbLf both creates a new paragraph in MsgBox but when it comes to writting values to a cell, it seems to me vbCr didn’t have any effect but vbLf acted like as if I used Alt+Enter to create a new paragraph within a cell.
amulee
New Member
You can find the history of Carriage return and Linefeed here.
A typewriter or electromechanical printer can print characters on paper, and execute operations such as move the carriage back to the left margin of the same line (carriage return), advance to the same column of the next line (line feed), and so on. Commands to control non-printing operations were transmitted in exactly the same way as printable characters by sending control characters with defined functions (e.g., the line feed character forced the carriage to move to the same position on the next line) to teleprinters. In modern computing and communications a few control characters, such as carriage return and line feed, have retained their original functions (although they are often implemented in software rather than activating electromechanical mechanisms to move a physical printer carriage) but many others are no longer required and are used for other purposes.
Different Operation System use different character for a standard line feed:
xenou
MrExcel MVP
For I don’t know what reason, major operating systems use different end of line characters. Windows uses CRLF (two characters) to mark the end of a line. But in my experience it generally still breaks to a new line on any LF. This is what you’ve noticed too.
For what it’s worth:
Windows: CRLF
Unix and Unix like systems: LF
Mac: CR
BradA
Board Regular
I’m coming in to this discussion well after it had ended, but I wanted to make a note here that might someday be helpful to someone.
I was using vbCrLf to create line breaks within cells. It did exactly what I wanted it to. But one day we noticed that it was also including a space (Chr(13)), and this space caused a lot of probelms. I found, on another post on this forum, that changing to vbLf results in that extra space not being included, and getting rid of that space solved our problems (the problem became apparent when the space began showing up on screens and in print as a little square box everyplace that I had vbCrLf). Perhaps there’s some reason to use vbCrLf instead of vbLf but in my case vbLf was certainly superior.
So if you’re having similar problems I’d recommend trying vbLf. But the following code should clean up any of these spaces that already exist in your spreadsheet.
DocAElstein
Banned user
Hi, I also hit a problem. And often I hit this Thread on a search trying to solve it. so I thought i would share my solution ( or workaround )
_.
Just brief details: When Pasting into a Thread Editor ( a code to a HTML ( or php) Window in this case ) sometimes carriage Returns seem to “vanish” in the final Posted Post.
It has caught me out a few times when pasting codes.
_.
Anyway, a workaround.
Somewhere along the line the exact translation to what similarly happens in a modern computer world is a bit abstract. So a carriage return ( or Line feed alone ) might work. But maybe doing a carriage return and a Line feed would not do any harm and might occasionally help.
Ties up a bit may be with what amulee said in Post #4
https://en.wikipedia.org/wiki/Teleprinter
So Try this: After copying to the clipboard from the code Window, run this code ( From Word or Excel )
But anyway the workaround seems to work.
Worth a try if you are experiencing similar problems. And or experiment with a vbCrLf etc. etc.
( and post back and share if you notice anything different )
One Final Note. This workaround does not always seem to be necessary. Different Forum editor, and changes from time to time to the software there of, can influence the results.
VBA Excel. Работа с текстом (функции)
Работа с текстом в коде VBA Excel. Функции, оператор & и другие ключевые слова для работы с текстом. Примеры использования некоторых функций и ключевых слов.
Функции для работы с текстом
Основные функции для работы с текстом в VBA Excel:
Функция | Описание |
---|---|
Asc(строка) | Возвращает числовой код символа, соответствующий первому символу строки. Например: MsgBox Asc(«/Stop»). Ответ: 47, что соответствует символу «/». |
Chr(код символа) | Возвращает строковый символ по указанному коду. Например: MsgBox Chr(47). Ответ: «/». |
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear]) | Преобразует число, дату, время в строку (тип данных Variant (String)), отформатированную в соответствии с инструкциями, включенными в выражение формата. Подробнее… |
InStr([начало], строка1, строка2, [сравнение]) | Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с начала строки. Подробнее… |
InstrRev(строка1, строка2, [начало, [сравнение]]) | Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с конца строки. |
Join(SourceArray,[Delimiter]) | Возвращает строку, созданную путем объединения нескольких подстрок из массива. Подробнее… |
LCase(строка) | Преобразует буквенные символы строки в нижний регистр. |
Left(строка, длина) | Возвращает левую часть строки с заданным количеством символов. Подробнее… |
Len(строка) | Возвращает число символов, содержащихся в строке. |
LTrim(строка) | Возвращает строку без начальных пробелов (слева). Подробнее… |
Mid(строка, начало, [длина]) | Возвращает часть строки с заданным количеством символов, начиная с указанного символа (по номеру). Подробнее… |
Replace(expression, find, replace, [start], [count], [compare]) | Возвращает строку, полученную в результате замены одной подстроки в исходном строковом выражении другой подстрокой указанное количество раз. Подробнее… |
Right(строка, длина) | Возвращает правую часть строки с заданным количеством символов. Подробнее… |
RTrim(строка) | Возвращает строку без конечных пробелов (справа). Подробнее… |
Space(число) | Возвращает строку, состоящую из указанного числа пробелов. Подробнее… |
Split(Expression,[Delimiter],[Limit],[Compare]) | Возвращает одномерный массив подстрок, извлеченных из указанной строки с разделителями. Подробнее… |
StrComp(строка1, строка2, [сравнение]) | Возвращает числовое значение Variant (Integer), показывающее результат сравнения двух строк. Подробнее… |
StrConv(string, conversion) | Изменяет регистр символов исходной строки в соответствии с заданным параметром «conversion». Подробнее… |
String(число, символ) | Возвращает строку, состоящую из указанного числа символов. В выражении «символ» может быть указан кодом символа или строкой, первый символ которой будет использован в качестве параметра «символ». Подробнее… |
StrReverse(строка) | Возвращает строку с обратным порядком следования знаков по сравнению с исходной строкой. Подробнее… |
Trim(строка) | Возвращает строку без начальных (слева) и конечных (справа) пробелов. Подробнее… |
UCase(строка) | Преобразует буквенные символы строки в верхний регистр. |
WorksheetFunction.Trim(строка) | Функция рабочего листа, которая удаляет все лишние пробелы (начальные, конечные и внутренние), оставляя внутри строки одиночные пробелы. |
В таблице перечислены основные функции VBA Excel для работы с текстом. С полным списком всевозможных функций вы можете ознакомиться на сайте разработчика.
Ключевые слова для работы с текстом
Ключевое слово | Описание |
---|---|
& | Оператор & объединяет два выражения (результат = выражение1 & выражение2). Если выражение не является строкой, оно преобразуется в Variant (String), и результат возвращает значение Variant (String). Если оба выражения возвращают строку, результат возвращает значение String. |
vbCrLf | Константа vbCrLf сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит последующий текст на новую строку (результат = строка1 & vbCrLf & строка2). |
vbNewLine | Константа vbNewLine в VBA Excel аналогична константе vbCrLf, также сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит текст на новую строку (результат = строка1 & vbNewLine & строка2). |
Примеры
Вывод прямых парных кавычек
Прямые парные кавычки в VBA Excel являются спецсимволами и вывести их, заключив в самих себя или в одинарные кавычки (апострофы), невозможно. Для этого подойдет функция Chr:
Автоматизация работы в nanoCAD с помощью Visual Basic for Applications
В статье рассмотрен один из вариантов автоматизации работы проектировщиков в САПР nanoCAD, позволяющий в значительной степени использовать параметризацию построений и сокращать сроки выполнения различных задач.
Многие проектировщики используют MS Excel для выполнения математических вычислений в табличной форме. Однако, функционал программы этим не ограничивается. С помощью встроенного в продукты Microsoft Office языка программирования Visual Basic for Applications (VBA) можно взаимодействовать с объектной моделью nanoCAD (и другими продуктами на её платформе). В данной статье мы на простом и универсальном примере продемонстрируем такую возможность — создадим и настроим слои, начертим прямоугольник, проставим к нему размеры и добавим текст, содержащий значение площади фигуры.
В примере используются MS Excel 2010 и nanoCAD 5.0, но версия программных продуктов не имеет особого значения.
Для начала необходимо запустить Excel и подготовить данные для построения:
Данные в ячейках B1 и B2 записаны простым числом, но они могут быть вычислены и с помощью формулы. Теперь необходимо переключиться на встроенную в Excel систему разработки и отладки программного кода — нажимаем Alt + F11. Появляется окно среды разработки:
Для удобства отладки кода необходимо подключить определённые библиотеки: в меню Tools выбираем пункт References… и подключаем nanoCAD Type Library (NCAuto.dll) и OdaX Type Library (OdaX_csd.dll). По умолчанию обе библиотеки расположены в папке: C:\Program Files\Nanosoft\nanoCAD 5.0\bin\.
Теперь необходимо создать модуль. Правый клик в дереве проекта по папке Microsoft Excel Objects, в выпадающем списке выбираем Insert – Module:
В появившемся окне подготовим основу будущей программы:
После явного объявления переменных работать с ними становится значительно удобнее: достаточно ввести имя переменной, поставить точку и программа подскажет все параметры и методы, относящиеся к объекту данного типа.
Текст после апострофа – комментарии к коду.
Объявим переменные с параметрами будущей фигуры и присвоим им значения:
Создадим новый слой, назначим ему толщину и цвет:
Предложим пользователю выбрать координаты вставки объекта:
Построение прямоугольника, состоящего из четырёх отрезков:
Вычислим площадь фигуры и вставим МТекст в центр прямоугольника:
Завершение базовой функции:
Для запуска написанной программы достаточно нажать F5 (после этого не забудьте указать точку вставки в nanoCAD). Результат работы программы представлен на картинке:
Пример демонстрирует возможность создания базовых примитивов. Больше информации по объектной модели nanoCAD можно найти на просторах сети интернет, в частности, на сайтах: vbamodel.narod.ru и www.alex160570.narod.ru/AcadVBA/vba01.htm
Стоит отметить, что писать так много строк однотипного кода, чтобы построить одну линию, трудоёмко и скучно, велика вероятность допустить ошибки. Для большего удобства можно создать пользовательские функции для построения отдельных примитивов. В качестве примера, рассмотрим функцию построения отрезка. Функция получает в качестве параметров координаты X и Y начала и конца отрезка и строит его:
Дополнительные пользовательские функции необходимо расположить после базовой функции, т.е. после строки End Sub, относящейся к базовой функции.
Теперь для построения прямоугольника можно использовать сокращённый код:
Аналогичные пользовательские функции можно написать для любых задач, которые необходимо выполнить больше одного раза. В тоже время, пользователю доступно множество операторов, таких как If. Then. Else, For. Next, Do. Loop и т.п. Для тех пользователей, которые только знакомятся с программированием, разобраться с возможностями языка не составит большого труда – для этого есть справка и многочисленные сайты с примерами решённых задач.
Для удобства запуска созданной программы можно расположить кнопку прямо на листе Excel. Для этого на вкладке «Разработчик» нужно выбрать «Вставить» – «Элемент управления формы» – «Кнопка»:
В появившемся окне выбрать нашу базовую функцию, после чего разместить кнопку на листе.
В один модуль можно добавить любое количество функций, создать для каждой функции кнопку и запускать их все из одного места.
Иногда возникает необходимость имитировать ввод каких-то команд в командную строку. Для этого можно использовать следующую конструкцию:
Данная команда построит окружность с центром в точке X:100, Y:100, Z:0 с радиусом 1000 единиц чертежа.
Для отладки создаваемых программ можно выводить данные в виде всплывающих окон или в командную строку nanoCAD. После выполнения следующего кода:
Появится диалоговое окно со значением переменной x1:
Для вывода текста в командную строку nanoCAD можно использовать следующий код:
На основе данного подхода нами разработана программа для автоматизации построения развёрток монолитных железобетонных стен. После задания исходных данных (около 30 параметров), на выходе получаем практически готовый чертёж стены с учётом фактической геометрии, наличия проёмов, примыкания других стен:
Такой подход к работе позволяет не только сократить время на подготовку документации в десятки, если не в сотни, раз, но и полностью исключить необходимость в её проверке.
В этой статье мы описали способы построения новых примитивов. Но объектная модель nanoCAD позволяет редактировать и существующие в чертеже примитивы, в том числе объекты nanoCAD СПДС — этому будет посвящена следующая статья.
Дмитрий Руденко, главный инженер проекта проектного бюро «Фордевинд»
Update (2014-10-06):
Видео с демонстрацией работы подобного скрипта: