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(строка) Преобразует буквенные символы строки в верхний регистр.
Val(строка) Возвращает символы, распознанные как цифры с начала строки и до первого нецифрового символа, в виде числового значения соответствующего типа. Подробнее…
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:

Sub Primer1()

    ‘Вывод одной прямой парной кавычки

MsgBox Chr(34)

    ‘Отображение текста в прямых кавычках

MsgBox Chr(34) & «Волга» & Chr(34)

    ‘Вывод 10 прямых парных кавычек подряд

MsgBox String(10, Chr(34))

End Sub

Смотрите интересное решение по выводу прямых кавычек с помощью прямых кавычек в первом комментарии.

Отображение слов наоборот

Преобразование слова «налим» в «Милан»:

Sub Primer2()

Dim stroka

    stroka = «налим»

    stroka = StrReverse(stroka) ‘милан

    stroka = StrConv(stroka, 3) ‘Милан

MsgBox stroka

End Sub

или одной строкой:

Sub Primer3()

MsgBox StrConv(StrReverse(«налим»), 3)

End Sub

Преобразование слова «лето» в «отель»:

Sub Primer4()

Dim stroka

    stroka = «лето»

    stroka = StrReverse(stroka) ‘отел

    stroka = stroka & «ь» ‘отель

MsgBox stroka

End Sub

или одной строкой:

Sub Primer5()

MsgBox StrReverse(«лето») & «ь»

End Sub

Печатная машинка

Следующий код VBA Excel в замедленном режиме посимвольно печатает указанную строку на пользовательской форме, имитируя печатную машинку.

Для реализации этого примера понадобится пользовательская форма (UserForm1) с надписью (Label1) и кнопкой (CommandButton1):

Пользовательская форма с элементами управления Label и CommandButton

Код имитации печатной машинки состоит из двух процедур, первая из которых замедляет выполнение второй, создавая паузу перед отображением очередного символа, что и создает эффект печатающей машинки:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Sub StopSub(Pause As Single)

Dim Start As Single

Start = Timer

    Do While Timer < Start + Pause

       DoEvents

    Loop

End Sub

Private Sub CommandButton1_Click()

Dim stroka As String, i As Byte

stroka = «Печатная машинка!»

Label1.Caption = «»

    For i = 1 To Len(stroka)

        Call StopSub(0.25) ‘пауза в секундах

        ‘следующая строка кода добавляет очередную букву

        Label1.Caption = Label1.Caption & Mid(stroka, i, 1)

    Next

End Sub

Обе процедуры размещаются в модуле формы. Нажатие кнопки CommandButton1 запустит замедленную печать символов в поле надписи, имитируя печатную машинку.


I have a column of product numbers that are all formatted like this:

MK444LLA

…same number and letter pattern, same character count. I need to insert a / into each cell so they all end up like this:

MK444LL/A

I’m thinking I just need a solution for the first row, which I can then apply to the entire column.

  • vba
  • excel

Community's user avatar

asked Jun 5, 2018 at 15:34

christopherhlee's user avatar

christopherhleechristopherhlee

892 gold badges4 silver badges13 bronze badges

2

  • Why can’t =LEFT(A1,7) & "/" & RIGHT(A1,1) work?

    Jun 5, 2018 at 15:59

  • @MathieuGuindon It can and that’s pretty much my answer as well.

    Jun 5, 2018 at 16:17

1 Answer

answered Jun 5, 2018 at 15:37

Tamás Sengel's user avatar

Tamás SengelTamás Sengel

54.8k29 gold badges164 silver badges218 bronze badges

5

  • My resulting string comes out in an odd format. «MK-01-1/34»

    Jun 5, 2018 at 16:37

  • @chlee218 in your question you said all rows had the same character count but the example you mentioned in that comment is a different length than the example from your question….

    Jun 5, 2018 at 17:17

  • @chlee218 if instead each row can have different size then use Left(Range("A1").Text, Len(Range("A1").Text) - 1) & "/" & Right(Range("A1").Text, 1)

    Jun 5, 2018 at 17:18

  • @Marcucciboy2 all of the rows do have the same character count. But, the resulting string comes out in that odd format (and the number after the «/» continues to climb with each row). Could this be because I used a R1C1 formula to arrive at the initial string?

    Jun 5, 2018 at 17:27

  • @chlee218 it must be, because the answer above will only stick the / character in what test already exists.

    Jun 5, 2018 at 17:29

Главная » Функции VBA »

28 Апрель 2011              351423 просмотров

  • ASC()— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC("D") вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB() и AscW():
    • AscB() — возвращает только первый байт числового кода для символа.
    • AscW() — возвращает код для символа в кодировке Unicode
  • Chr() — возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки — "), т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные). Я обычно именно эту функцию и использую.
        Dim sWord As String
        sWord = Chr(34) & "Слово в кавычках" & Chr(34)

    Есть варианты этой функции — ChrB() и ChrW(). Работают аналогично таким же вариантам для функции Asc().

  • InStr() и InStrRev()— одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.
        Dim sStr As String
        sStr = "w"
        If InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 Then
            MsgBox "Искомое слово присутствует!"
        Else
            MsgBox "Искомое слово отсутствует!"
        End If

    Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки

  • Left(), Right(), Mid()— возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.
        Dim sStr As String
        sStr = "Hello, World!"
        MsgBox Mid(sStr, 1, 5)
  • Len() — возможность получить число символов в строке. Часто используется с циклами, операциями замены и т.п.
  • LCase() и UCase() — перевести строку в нижний и верхний регистры соответственно. Часто используется для подготовки значения к сравнению, когда при сравнении регистр не важен (фамилии, названия фирм, городов и т.п.).
  • LSet() и RSet() — возможность заполнить одну переменную символами другой без изменения ее длины (соответственно слева и справа). Лишние символы обрезаются, на место недостающих подставляются пробелы.
  • LTrim(), RTrim(), Trim() — возможность убрать пробелы соответственно слева, справа или и слева, и справа.
  • Replace()— возможность заменить в строке одну последовательность символов на другую.
        Dim sStr As String
        sStr = "Hello, World!"
        MsgBox Replace(sStr, "Hello", "Bay")
  • Space() — получить строку из указанного вами количества пробелов;
    Еще одна похожая функция — Spc(), которая используется для форматирования вывода на консоль. Она размножает пробелы с учетом ширины командной строки.
  • StrComp() — возможность сравнить две строки.
  • StrConv() — возможность преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.):
        Dim sStr As String
        sStr = "Hello, World!"
        MsgBox StrConv("Hello, World!", vbUpperCase)

    В качестве второго параметра параметра могут применяться константы:

    • vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
    • vbLowerCase: Преобразует все текстовые символы в нижний регистр
    • vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
    • *vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
    • *vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
    • **vbKatakana: Преобразует символы Hiragana в символы Katakana
    • **vbHiragana: Преобразует символы Katakana в символы Hiragana
    • ***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
    • ***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию
    • * применимо для локализацией Дальнего востока
      ** применимо только для Японии
      *** не поддерживается операционными системами под управлением Macintosh

  • StrReverse() — «перевернуть» строку, разместив ее символы в обратном порядке. Функция работает только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
  • Tab() — еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab.
  • String() — позволяет получить строку из указанного количества символов (которые опять-таки указываются Вами). Обычно используются для форматирования вывода совместно с функцией Len().

Статья помогла? Сделай твит, поделись ссылкой с друзьями!

 

Доброго время суток, уважаемые форумчане!  
Задача такова.  
В каждую строку на листе нужно вставить символ # после 5 знака в строке.  
Либо вместо второго, третьего пробела в строке вставка определенного символа.  
Спасибо!

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

1. Можно аналогичную формулу протянуть, ну а по месту макрос:  

  Sub tt()  
Dim rr As Range  
For Each rr In [a1:a10]
rr.Value = Left(rr.Value, 5) & «#» & Right(rr.Value, Len(rr.Value) — 5)  
Next  
End Sub  

  Это если в строке одну ячейку нужно преобразовать.

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

C пробелами такая заготовка, обрабатывает выделенную ячейку:  

  Sub ttt()  
Dim x&, y&, z&, temp$  
temp = Selection.Value  
x = InStr(temp, » «)  
y = InStr(x + 1, temp, » «)  
z = InStr(y + 1, temp, » «)  
Mid(temp, y, 1) = «#»  
Mid(temp, z, 1) = «#»  
Selection.Value = temp  
End Sub  

  Может быть можно проще, не знаю, раньше не делал…

 

{quote}{login=Hugo}{date=18.08.2011 11:38}{thema=}{post}C пробелами такая заготовка, обрабатывает выделенную ячейку:  

  Работает здорово!Спасибо!  
Вот только как быть с большим количеством строк ~4000

 

nilem

Пользователь

Сообщений: 837
Регистрация: 23.12.2012

Например:  

  Sub tttt()  
Dim rr As Range, x&, t$  
For Each rr In Range(«A1», Cells(Rows.Count, 1).End(xlUp)).Cells  
   t = rr.Value  
   x = InStr(t, » «)  
   Mid(t, x + 1) = Replace(t, » «, «#», x + 1, 2, 1)  
   rr.Value = t  
Next  
End Sub

 

Или так, работают с выделенным диапазоном.  
> вставить символ # после 5 знака в строке  

  Sub Mishgun1()  
Selection = Evaluate(«INDEX(LEFT(» & Selection.Address & «,5)&»»#»»&MID(» & Selection.Address & «,6,999),)»)  
End Sub  

  > вместо второго, третьего пробела в строке вставка определенного символа  

  Sub Mishgun2()  
Selection = Evaluate(«INDEX(SUBSTITUTE(SUBSTITUTE(» & Selection.Address & «,»» «»,»»#»»,2),»» «»,»»#»»,2),)»)  
End Sub

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

Точно, у Replace ведь есть Count!  
Когда это всё запомнится… :)

 

nilem

Пользователь

Сообщений: 837
Регистрация: 23.12.2012

Например:  

  Sub probel2()  
Dim r As Range, t$, s$  
For Each r In Range(«A1», Cells(Rows.Count, 1).End(xlUp)).Cells  
   t = r.Value  
   If InStr(t, «-«) < 6 And InStr(t, «-«) > 0 Then  
       s = t  
   Else  
       s = Replace(t, » «, «@», 1, 1, 1)  
   End If  
   t = Replace(s, » «, «#», 1, 2, 1)  
   r.Resize(, 3) = Split(t, «#»)  
   r = Replace(r, «@», » «)  
Next  
End Sub

 

nilem

Пользователь

Сообщений: 837
Регистрация: 23.12.2012

Упс, был вопрос и куда-то пропал.

 

серия в 1столбец, номер во 2й!остальное в 3-й

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

Да аноним, одобряем, делайте! :)  

    Если серьёзно, то можно на RegExp сделать, например такую UDF использовать (автора не записал, извиняйте):  

  Function FindDigits(ByVal txt$, ByVal DigitsCount%) As String  
   ‘ ищет в строке txt$ подстроку цифр длиной DigitsCount%  
   Dim RegExp As Object  
   Set RegExp = CreateObject(«VBScript.RegExp»): RegExp.Global = True  
   RegExp.Pattern = «[D]»: txt$ = » » & RegExp.Replace(txt$, » «) & » »
   RegExp.Pattern = » [d]{» & DigitsCount% & «} »
   If RegExp.test(txt$) Then FindDigits = Trim$(RegExp.Execute(txt$)(0).Value)  
End Function  

  Только там есть 2 ячейки, где номера по 5 знаков — это дополнительная сложность…  

  Ну или кодом ищем положение 5 цифр подряд, по этому месту делаем первый разрез, по первому пробелу дальше — второй.

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

#12

23.08.2011 11:57:13

{quote}{login=nilem}{date=23.08.2011 10:33}{thema=}{post}Упс, был вопрос и куда-то пропал.{/post}{/quote}Правильно пропал — не по теме был вопрос.

  • ASC

    ()
    — эта функция позволяет вернуть числовой код для переданного символа. Например, ASC(«D») вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr
    (), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB
    () и AscW
    ():

    • AscB

      ()
      — возвращает только первый байт числового кода для символа.
    • AscW

      ()
      — возвращает код для символа в кодировке Unicode
  • Chr

    ()
    — возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки — «)
    , т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные)
    . Я обычно именно эту функцию и использую.

    Dim sWord As String
    sWord = Chr(34) & «Слово в кавычках» & Chr(34)

    Есть варианты этой функции — ChrB
    () и ChrW
    (). Работают аналогично таким же вариантам для функции Asc()
    .

  • InStr

    ()
    и InStrRev

    ()
    — одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.

    Dim sStr As String
    sStr = «w»
    If InStr(1, «Hello, World!», sStr, vbTextCompare) > 0 Then
    MsgBox «Искомое слово присутствует!»
    Else
    MsgBox «Искомое слово отсутствует!»
    End If

    Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки

  • Left

    ()
    , Right

    ()
    , Mid

    ()
    — возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.

    Dim
    sStr As
    String

    sStr = «Hello, World!»

    MsgBox Mid(sStr, 1, 5)

    Dim sStr As String
    sStr = «Hello, World!»
    MsgBox Mid(sStr, 1, 5)

  • Len

    ()
    — возможность получить число символов в строке. Часто используется с циклами, операциями замены и т.п.
  • LCase

    ()
    и UCase

    ()
    — перевести строку в нижний и верхний регистры соответственно. Часто используется для подготовки значения к сравнению, когда при сравнении регистр не важен (фамилии, названия фирм, городов и т.п.)
    .
  • LSet

    ()
    и RSet

    ()
    — возможность заполнить одну переменную символами другой без изменения ее длины (соответственно слева и справа)
    . Лишние символы обрезаются, на место недостающих подставляются пробелы.
  • LTrim

    ()
    , RTrim

    ()
    , Trim

    ()
    — возможность убрать пробелы соответственно слева, справа или и слева, и справа.
  • Replace

    ()
    — возможность заменить в строке одну последовательность символов на другую.

    Dim
    sStr As
    String

    sStr = «Hello, World!»

    MsgBox Replace(sStr, «Hello»
    , «Bay»
    )

    Dim sStr As String
    sStr = «Hello, World!»
    MsgBox Replace(sStr, «Hello», «Bay»)

  • Space

    ()
    — получить строку из указанного вами количества пробелов;
    Еще одна похожая функция — Spc

    ()
    , которая используется для форматирования вывода на консоль. Она размножает пробелы с учетом ширины командной строки.
  • StrComp

    ()
    — возможность сравнить две строки.
  • StrConv

    ()
    — возможность преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.)
    :

    Dim
    sStr As
    String

    sStr = «Hello, World!»

    MsgBox StrConv(«Hello, World!»
    , vbUpperCase)

    Dim sStr As String
    sStr = «Hello, World!»
    MsgBox StrConv(«Hello, World!», vbUpperCase)

    В качестве второго параметра параметра могут применяться константы:

    • vbUpperCase:
      Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
    • vbLowerCase:
      Преобразует все текстовые символы в нижний регистр
    • vbProperCase:
      Переводит первый символ каждого слова в Верхний Регистр
    • *vbWide:
      Преобразует символы строки из однобайтовых в двухбайтовые
    • *vbNarrow:
      Преобразует символы строки из двухбайтовых в однобайтовые
    • **vbKatakana:
      Преобразует символы Hiragana в символы Katakana
    • **vbHiragana:
      Преобразует символы Katakana в символы Hiragana
    • ***vbUnicode:
      Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
    • ***vbFromUnicode:
      Преобразует строку из Юникод в кодовую страницу системы по умолчанию
    • * применимо для локализацией Дальнего востока
      ** применимо только для Японии
      *** не поддерживается операционными системами под управлением Macintosh

  • StrReverse

    ()
    — «перевернуть» строку, разместив ее символы в обратном порядке. Функция работает только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
  • Tab

    ()
    — еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab
    .
  • String

    ()
    — позволяет получить строку из указанного количества символов (которые опять-таки указываются Вами)
    . Обычно используются для форматирования вывода совместно с функцией Len
    ().

В разделе на вопрос Люди,объясните подробно,пожалуйста,что значит в Паскале функция ord(x) и ей обратная chr(x) ? заданный автором Nick Brown
лучший ответ это Есть специальная таблица символов (расширенного кода ASCII, когда каждому символу принадлежит числовое значение, всего в таблице имеется 255 значений, то есть каждому символу присвоено число,
chr(0..254) преобразует число (один байт) в символ которому принадлежит данное число, например chr(71) результатом будет буква «G», так же нажатие клавиш на клавиатуре выдаёт свой код вот как раз этот код при постановке в данный оператор и выдаст результатом какая клавиша нажата, это я к примеру. А вот оператор ORD(x) делает данный процесс в обратном порядке.
Задаём значение символ и получаем число от 0 до 254 (один байт)
например ORD(«G») даст нам результат 71 (в десятичном формате)
Вот вроде и всё !!!

Ответ от Katyonachik
[новичек]
Все просто, на самом деле)
Орд («Х») — вернет код символа Х из таблицы АСКИИ.
Результатом обратной ей функции будет символ, который соответствует введенному коду (от которого берется функция) из той же таблицы АСКИИ.

Ответ от Jurii
[гуру]
Это не взаимообратные функции!
Функция Ord возвращает порядковый номер значения перечислимого типа.
Счёт начинается с ноля.
Для типа byte функция вернёт собственно значение — порядковый номер совпадает со значением.
Для типа char функция вернёт порядковый номер символа, который (число случайно) совпадает с ASCII кодом.
Функция chr возвращает символ с заданным кодом в ASCII.
Вывод: Просто, в отношении символьных значений, они действительно работают как обратные друг другу.. .
Поэтому можно сказать, что функция ord обратная функции chr, но не наоборот — функция chr не является обратной для функции ord, т. к. область применения функции ord не ограничивается работой с символами!

В этой статье разберем работу со строками в VBA на примерах функций InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Replace, Space, StrComp, String, StrReverse.

Строки — это последовательность символов, которая может состоять либо из алфавитов, цифр, специальных символов, либо из всех них. Переменная называется строкой, если она заключена в двойные кавычки «».

Синтаксис

variablename = «string»

Примеры

Строковые функции

Существуют предопределенные функции VBA String, которые помогают разработчикам эффективно работать со строками. Ниже приведены методы String, поддерживаемые в VBA. Пожалуйста, нажмите на каждый из методов, чтобы знать подробно.

Название функции и описание

InStr

Функция InStr возвращает первое вхождение одной строки в другую строку. Поиск происходит слева направо.

Синтаксис

InStr(string1,string2[,compare])

Параметр Описание

  • Пуск — необязательный параметр. Указывает начальную позицию для поиска. Поиск начинается с первой позиции слева направо.

пример

Private Sub Constant_demo_Click()
Dim Var As Variant
Var = «Microsoft VBScript»
MsgBox («Line 1: » & InStr(1, Var, «s»))
MsgBox («Line 2: » & InStr(7, Var, «s»))
MsgBox («Line 3: » & InStr(1, Var, «f», 1))
MsgBox («Line 4: » & InStr(1, Var, «t», 0))
MsgBox («Line 5: » & InStr(1, Var, «i»))
MsgBox («Line 6: » & InStr(7, Var, «i»))
MsgBox («Line 7: » & InStr(Var, «VB»))
End Sub

Line 1: 6
Line 2: 0
Line 3: 8
Line 4: 9
Line 5: 2
Line 6: 16
Line 7: 11

Возвращает первое вхождение указанной подстроки. Поиск происходит слева направо.

InStrRev

Функция InStrRev возвращает первое вхождение одной строки в другую строку. Поиск происходит справа налево.

Синтаксис

InStrRev(string1,string2[,start,])

Параметр Описание

  • String1 — требуемый параметр. Строка для поиска.
  • String2 — требуемый параметр. Строка, по которой выполняется поиск String1.
  • Пуск — необязательный параметр. Указывает начальную позицию для поиска. Поиск начинается с первой позиции справа налево.
  • Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
  • 1 = vbTextCompare — выполняет сравнение текста

пример

Добавьте кнопку и установите следующую функцию.

Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & InStrRev(var,»s»,10))
msgbox(«Line 2: » & InStrRev(var,»s»,7))
msgbox(«Line 3: » & InStrRev(var,»f»,-1,1))
msgbox(«Line 4: » & InStrRev(var,»t»,5))
msgbox(«Line 5: » & InStrRev(var,»i»,7))
msgbox(«Line 6: » & InStrRev(var,»i»,7))
msgbox(«Line 7: » & InStrRev(var,»VB»,1))
End Sub

После выполнения вышеуказанного скрипта он производит следующий результат.

Line 1: 6
Line 2: 6
Line 3: 8
Line 4: 0
Line 5: 2
Line 6: 2
Line 7: 0

Возвращает первое вхождение указанной подстроки. Поиск происходит справа налево.

LCASE

Функция LCase возвращает строку после преобразования введенной строки в строчные буквы.

Синтаксис

Lcase(String)

пример

Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & LCase(var))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & LCase(var))
var = «microsoft»
msgbox(«Line 3: » & LCase(var))
End Sub

Line 1: microsoft vbscript
Line 2: ms vbscript
Line 3: microsoft

Возвращает нижний регистр указанной строки.

UCase

Функция UCase возвращает строку после преобразования введенной строки в буквы буквы UPPER.

Синтаксис

UCase(String)

пример

Добавьте кнопку и поместите следующую функцию внутри нее.

Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & UCase(var))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & UCase(var))
var = «microsoft»
msgbox(«Line 3: » & UCase(var))
End Sub

После выполнения вышеуказанного скрипта он производит следующий вывод.

Line 1: MICROSOFT VBSCRIPT
Line 2: MS VBSCRIPT
Line 3: MICROSOFT

Возвращает верхний регистр указанной строки.

Left

Функция Left возвращает указанное количество символов с левой стороны данной входной строки.

Синтаксис

Left(String, Length)

Параметр Описание

  • String — обязательный параметр. Строка ввода, из которой указанное число символов должно быть возвращено с левой стороны.
  • Длина — требуемый параметр. Целое число, определяющее количество возвращаемых символов.

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
Dim var as Variant
var = «Microsoft VBScript»
msgbox(«Line 1: » & Left(var,2))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & Left(var,5))
var = «microsoft»
msgbox(«Line 3: » & Left(var,9))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1: Mi
Line 2: MS VB
Line 3: microsoft

Возвращает определенное количество символов с левой стороны строки.

Right

Функция Right возвращает указанное количество символов с правой стороны данной входной строки.

Синтаксис

Right(String, Length)

Параметр Описание

  • String — обязательный параметр. Строка ввода, из которой указанное число символов должно быть возвращено с правой стороны.
  • Длина — требуемый параметр. Целое число, которое задает количество возвращаемых символов.

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & Right(var,2))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & Right(var,5))
var = «microsoft»
msgbox(«Line 3: » & Right(var,9))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1: pt
Line 2: CRIPT
Line 3: microsoft

Возвращает определенное количество символов с правой стороны строки.

Mid

Mid функция возвращает указанное количество символов из заданной входной строки.

Синтаксис

Mid(String,start[,Length])

Параметр Описание

  • String — обязательный параметр. Строка ввода, из которой задано количество символов, которые нужно вернуть.
  • Начало — требуемый параметр. Целое число, определяющее начальную позицию строки.
  • Длина — необязательный параметр. Целое число, определяющее количество возвращаемых символов.

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
Dim var as Variant
var = «Microsoft VBScript»
msgbox(«Line 1: » & Mid(var,2))
msgbox(«Line 2: » & Mid(var,2,5))
msgbox(«Line 3: » & Mid(var,5,7))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1: icrosoft VBScript
Line 2: icros
Line 3: osoft V

Возвращает определенное количество символов из строки на основе указанных параметров.

LTrim

Функция Ltrim удаляет пробелы с левой стороны строки.

Синтаксис

LTrim(String)

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
Dim var as Variant
var = » Microsoft VBScript»
msgbox «After Ltrim: » & LTrim(var)
End Sub

Когда вы выполняете функцию, она производит следующий вывод.

After Ltrim: Microsoft VBScript

Возвращает строку после удаления пробелов в левой части указанной строки.

RTrim

Функция Rtrim удаляет пробелы с правой стороны строки.

Синтаксис

RTrim(String)

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
Dim var as Variant
var = «Microsoft VBScript »
msgbox(«After Rtrim: » & RTrim(var))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

After Rtrim: Microsoft VBScript

Возвращает строку после удаления пробелов в правой части указанной строки.

Trim

Функция Trim удаляет как ведущее, так и конечное пустое пространство данной входной строки.

Синтаксис

Trim(String)

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
var = » Microsoft VBScript »
msgbox («After Trim: » & Trim(var))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

After trim: Microsoft VBScript

Возвращает строковое значение после удаления как верхнего, так и конечного пробелов.

Len

Функция Len возвращает длину данной входной строки, включая пробелы.

Синтаксис

Len(String)

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
Dim var1 as Variant
Dim var2 as Variant
var1 =»Microsoft VBScript»
msgbox(«Length of var1 is: » & Len(var1))
var2 = » Microsoft VBScript »
msgbox («Length of var2 is: » & Len(var2))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Length of var1 is: 18
Length of var2 is: 36

Возвращает длину данной строки.

Replace

Функция Replace заменяет указанную часть строки на определенную строку, указанное количество раз.

Синтаксис

Replace(string,find,replacewith[,start[,count[,compare]]])

Параметр Описание

  • String — обязательный параметр. Строка ввода, которую нужно искать для замены.
  • Find — требуемый параметр. Часть строки, которая будет заменена.
  • Replacewith — обязательный параметр. Строка замены, которая будет заменена на параметр find.
  • Start — необязательный параметр. Задает начальную позицию, из которой нужно искать и заменять строку. Значение по умолчанию — 1.
  • Count — необязательный параметр. Указывает количество раз, которое должна выполняться замена.
  • Compare — Необязательный параметр. Указывает метод сравнения, который будет использоваться. Значение по умолчанию — 0.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение
  • 1 = vbTextCompare — выполняет текстовое сравнение

пример

Private Sub Constant_demo_Click()
Dim var as Variant
var = «This is VBScript Programming»
«VBScript to be replaced by MS VBScript
msgbox(«Line 1: » & Replace(var,»VBScript»,»MS VBScript»))
«VB to be replaced by vb
msgbox(«Line 2: » & Replace(var,»VB»,»vb»))
«»is» replaced by ##
msgbox(«Line 3: » & Replace(var,»is»,»##»))
«»is» replaced by ## ignores the characters before the first occurence
msgbox(«Line 4: » & Replace(var,»is»,»##»,5))
«»s» is replaced by ## for the next 2 occurences.
msgbox(«Line 5: » & Replace(var,»s»,»##»,1,2))
«»r» is replaced by ## for all occurences textual comparison.
msgbox(«Line 6: » & Replace(var,»r»,»##»,1,-1,1))
«»t» is replaced by ## for all occurences Binary comparison
msgbox(«Line 7: » & Replace(var,»t»,»##»,1,-1,0))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1: This is MS VBScript Programming
Line 2: This is vbScript Programming
Line 3: Th## ## VBScript Programming
Line 4: ## VBScript Programming
Line 5: Thi## i## VBScript Programming
Line 6: This is VBSc##ipt P##og##amming
Line 7: This is VBScrip## Programming

Возвращает строку после замены строки другой строкой.

Space

Функция Space заполняет строку конкретным количеством пробелов.

Синтаксис

space(number)

Параметр Описание

Номер — требуемый параметр. Количество пробелов, которые мы хотим добавить к данной строке.

пример

Private Sub Constant_demo_Click()
Dim var1 as Variant
var1 = «Microsoft»
Dim var2 as Variant
var2 = «VBScript»
msgbox(var1 & Space(2)& var2)
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Microsoft VBScript

Заполняет строку указанным количеством пробелов.

StrComp

Функция StrComp возвращает целочисленное значение после сравнения двух заданных строк. Он может возвращать любое из трех значений -1, 0 или 1 на основе входных строк для сравнения.

  • Если String1 меньше String2, то StrComp возвращает -1
  • Если String1 равно String2, то StrComp возвращает 0
  • Если String1 больше String2, то StrComp возвращает 1

Синтаксис

StrComp(string1,string2[,compare])

Параметр Описание

  • String1 — требуемый параметр. Первое строковое выражение.
  • String2 — требуемый параметр. Второе строковое выражение.
  • Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
  • 1 = vbTextCompare — выполняет сравнение текста

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
Dim var1 as Variant
msgbox(«Line 1:» & StrComp(«Microsoft»,»Microsoft»))
msgbox(«Line 2:» &StrComp(«Microsoft»,»MICROSOFT»))
msgbox(«Line 3:» &StrComp(«Microsoft»,»MiCrOsOfT»))
msgbox(«Line 4:» &StrComp(«Microsoft»,»MiCrOsOfT»,1))
msgbox(«Line 5:» &StrComp(«Microsoft»,»MiCrOsOfT»,0))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1:0
Line 2:1
Line 3:1
Line 4:0
Line 5:1

Возвращает целочисленное значение после сравнения двух указанных строк.

String

Функция String заполняет строку указанным символом для указанного количества раз.

Синтаксис

String(number,character)

Параметр Описание

  • Номер — требуемый параметр. Целочисленное значение, которое будет повторяться в течение определенного количества раз против параметра символа.
  • Символ — требуемый параметр. Значение символа, которое должно повторяться определенное количество раз.

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
msgbox(«Line 1:» & String(3,»$»))
msgbox(«Line 2:» & String(4,»*»))
msgbox(«Line 3:» & String(5,100))
msgbox(«Line 4:» & String(6,»ABCDE»))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Chr

Функция Chr

Chr(CharCode)
Chr$(CharCode)
ChrB(CharCode)
ChrW(CharCode)

Функция Chr
(Ch
aracter
)позволяет получить символ по значению его числового кода ANSI или Unicode

Возвращаемое значение

Функции Chr
, ChrB
, ChrW
возвращают значение субтипа String типа Variant , содержащее символ, соответствующий указанному коду символа ANSI или Unicode. Функции Chr$
, ChrB$
, ChrW$
возвращают соответственно значение типа String

Примечание

Chr
и Chr$
возвращают символ по его кодировке в стандарте ANSI
ChrB
и ChrB$
возвращают однобайтовую
строку
ChrW
возвращает символ Unicode, однако в системах, не поддерживающих Unicode, ее поведение аналогично Chr

Использование в параметре CharCode
значения больше, чем 255, генерирует ошибки стадии выполнения 5: Invalid procedure call or argument или 6: Overflow

Параметры

CharCode Обязательный аргумент является значением типа Long , определяющим символ. Обычно, функция Chr
применяется при вставке в текстовые строки непечатных символов(возврат каретки, перевод строки, табулятор и т.д.). Коды 0-31 соответствуют стандартным управляющим символам ASCII. Например, Chr
(10) возвращает символ перевода строки
Пример

Dim retval
retval = Chr
(65)
Debug.Print retval » возвращается A

Категория

Итак, продолжаем наши уроки Паскаль для начинающих. В прошлом уроке мы разобрали , но там мы упомянули про символы, поэтому прежде чем глубоко изучать тип данных , мы узнаем о типе Char. Символьный тип данных Char
— тип данных, значениями которого являются одиночные символы. Данный тип может содержать всего один любой символ (Например: «*», «/», «.», «!» и другие). Каждый такой символ занимает 8 бит памяти, всего существует 256 восьмибитовых символов. Все символы, используемые символьным типом Char записаны в таблице символов ASCII (American Standart Code for Information Interchange) или Американский стандарт кода для обмена информацией.

Символьные константы заключаются в апострофы, например «.», «*», «7», «s». Также символьную константу можно записать с помощью символа — «решетки», например #185 — выведет символ под номером 185 из таблицы ASCII (это символ «№»).

К символьному типу применимы 5 функций: Ord, Chr, Pred, Succ и Upcase.

Функция Ord
преобразовывает символ в её числовой код из таблицы ASCII
. Например для символа «№» она возвратит значение 185. Функция Chr обратна функции Ord. Функция Chr
преобразует числовой код символа в сам символ, например, если взять числовой код 64, то функция Chr (64) возвратит символ «@».

Пример программы на Паскаль с использованием функции Ord:

Begin //Начало программы

writeln (ord (x)); //Вывод номера в таблице ASCII
end. //Конец программы

Пример программы на Паскаль с использованием функции Chr:

Var x:integer; // Описание переменных (x — целочисленный тип)
Begin //Начало программы
readln (x); //Считывание переменной
writeln (chr (x)); //Вывод символа по номеру в таблице ASCII
end. //Конец программы

Функция Pred
возвращает значение предыдущего символа из таблицы ASCII, например для символа «P» (Pred (P)) эта функция возвратит символ «O». Функция Succ
обратная функции Pred. Для символа «P» функция Succ (P) возвратит символ «Q», то есть следующий символ из вышеописанной таблицы ASCII.

Пример программы на Паскаль с использованием функций Pred и Succ:

Var x:char; // Описание переменных (x — символьный тип)
Begin //Начало программы
readln (x); //Считывание переменной
writeln (pred (x)); //Вывод предыдущего символа в таблице ASCII
writeln (succ (x)); //Вывод следующего символа в таблице ASCII
end. //Конец программы

Функция UpCase
применима только для строчных букв английского алфавита. Данная функция преобразует строчные английские буквы в заглавные.

Пример программы на Паскаль с использованием функции UpCase:

Приложение к уроку — таблицы символов ASCII:

На сегодня урок окончен. Помните, что программирование на паскале
просто и является основой для многих языков программирования.

Loading...Loading…

Понравилась статья? Поделить с друзьями:
  • Vba excel вставить перенос строки
  • Vba excel вставить новую строку
  • Vba excel вставить несколько столбцов
  • Vba excel вставить картинку в форму
  • Vba excel вставить как число