Меню

VBA Excel Работа с текстом функции



Коды символов в VB

Коды символов в VB

Раз уж всем так нужны коды клавиш, то вот они :

Код: 32 Символ: ( пробел)
Код: 33 Символ: !
Код: 34 Символ: »
Код: 35 Символ: #
Код: 36 Символ: $
Код: 37 Символ: %
Код: 38 Символ: &
Код: 39 Символ: ‘
Код: 40 Символ: (
Код: 41 Символ: )
Код: 42 Символ: *
Код: 43 Символ: +
Код: 44 Символ: ,
Код: 45 Символ: —
Код: 46 Символ: .
Код: 47 Символ: /
Код: 48 Символ: 0
Код: 49 Символ: 1
Код: 50 Символ: 2
Код: 51 Символ: 3
Код: 52 Символ: 4
Код: 53 Символ: 5
Код: 54 Символ: 6
Код: 55 Символ: 7
Код: 56 Символ: 8
Код: 57 Символ: 9
Код: 58 Символ: :
Код: 59 Символ: ;
Код: 60 Символ:
Код: 63 Символ: ?
Код: 64 Символ: @
Код: 65 Символ: A
Код: 66 Символ: B
Код: 67 Символ: C
Код: 68 Символ: D
Код: 69 Символ: E
Код: 70 Символ: F
Код: 71 Символ: G
Код: 72 Символ: H
Код: 73 Символ: I
Код: 74 Символ: J
Код: 75 Символ: K
Код: 76 Символ: L
Код: 77 Символ: M
Код: 78 Символ: N
Код: 79 Символ: O
Код: 80 Символ: P
Код: 81 Символ: Q
Код: 82 Символ: R
Код: 83 Символ: S
Код: 84 Символ: T
Код: 85 Символ: U
Код: 86 Символ: V
Код: 87 Символ: W
Код: 88 Символ: X
Код: 89 Символ: Y
Код: 90 Символ: Z
Код: 91 Символ: [
Код: 92 Символ: \
Код: 93 Символ: ]
Код: 94 Символ: ^
Код: 95 Символ: _
Код: 96 Символ: `
Код: 97 Символ: a
Код: 98 Символ: b
Код: 99 Символ: c
Код: 100 Символ: d
Код: 101 Символ: e
Код: 102 Символ: f
Код: 103 Символ: g
Код: 104 Символ: h
Код: 105 Символ: i
Код: 106 Символ: j
Код: 107 Символ: k
Код: 108 Символ: l
Код: 109 Символ: m
Код: 110 Символ: n
Код: 111 Символ: o
Код: 112 Символ: p
Код: 113 Символ: q
Код: 114 Символ: r
Код: 115 Символ: s
Код: 116 Символ: t
Код: 117 Символ: u
Код: 118 Символ: v
Код: 119 Символ: w
Код: 120 Символ: x
Код: 121 Символ: y
Код: 122 Символ: z
Код: 123 Символ: <
Код: 124 Символ: |
Код: 125 Символ: >
Код: 126 Символ:

Код: 127 Символ: 
Код: 128 Символ: Ђ
Код: 129 Символ: Ѓ
Код: 130 Символ: ‚
Код: 131 Символ: ѓ
Код: 132 Символ: „
Код: 133 Символ: …
Код: 134 Символ: †
Код: 135 Символ: ‡
Код: 136 Символ: Ђ
Код: 137 Символ: ‰
Код: 138 Символ: Љ
Код: 139 Символ: ‹
Код: 140 Символ: Њ
Код: 141 Символ: Ќ
Код: 142 Символ: Ћ
Код: 143 Символ: Џ
Код: 144 Символ: ђ
Код: 145 Символ: ‘
Код: 146 Символ: ’
Код: 147 Символ: “
Код: 148 Символ: ”
Код: 149 Символ: •
Код: 150 Символ: –
Код: 151 Символ: —
Код: 152 Символ:
Код: 153 Символ: ™
Код: 154 Символ: љ
Код: 155 Символ: ›
Код: 156 Символ: њ
Код: 157 Символ: ќ
Код: 158 Символ: ћ
Код: 159 Символ: џ
Код: 160 Символ:
Код: 161 Символ: Ў
Код: 162 Символ: ў
Код: 163 Символ: Ј
Код: 164 Символ: ¤
Код: 165 Символ: Ґ
Код: 166 Символ: ¦
Код: 167 Символ: §
Код: 168 Символ: Ё
Код: 169 Символ: ©
Код: 170 Символ: Є
Код: 171 Символ: «
Код: 172 Символ: ¬
Код: 173 Символ: ­
Код: 174 Символ: ®
Код: 175 Символ: Ї
Код: 176 Символ: °
Код: 177 Символ: ±
Код: 178 Символ: І
Код: 179 Символ: і
Код: 180 Символ: ґ
Код: 181 Символ: µ
Код: 182 Символ: ¶
Код: 183 Символ: ·
Код: 184 Символ: ё
Код: 185 Символ: №
Код: 186 Символ: є
Код: 187 Символ: »
Код: 188 Символ: ј
Код: 189 Символ: Ѕ
Код: 190 Символ: ѕ
Код: 191 Символ: ї
Код: 192 Символ: А
Код: 193 Символ: Б
Код: 194 Символ: В
Код: 195 Символ: Г
Код: 196 Символ: Д
Код: 197 Символ: Е
Код: 198 Символ: Ж
Код: 199 Символ: З
Код: 200 Символ: И
Код: 201 Символ: Й
Код: 202 Символ: К
Код: 203 Символ: Л
Код: 204 Символ: М
Код: 205 Символ: Н
Код: 206 Символ: О
Код: 207 Символ: П
Код: 208 Символ: Р
Код: 209 Символ: С
Код: 210 Символ: Т
Код: 211 Символ: У
Код: 212 Символ: Ф
Код: 213 Символ: Х
Код: 214 Символ: Ц
Код: 215 Символ: Ч
Код: 216 Символ: Ш
Код: 217 Символ: Щ
Код: 218 Символ: Ъ
Код: 219 Символ: Ы
Код: 220 Символ: Ь
Код: 221 Символ: Э
Код: 222 Символ: Ю
Код: 223 Символ: Я
Код: 224 Символ: а
Код: 225 Символ: б
Код: 226 Символ: в
Код: 227 Символ: г
Код: 228 Символ: д
Код: 229 Символ: е
Код: 230 Символ: ж
Код: 231 Символ: з
Код: 232 Символ: и
Код: 233 Символ: й
Код: 234 Символ: к
Код: 235 Символ: л
Код: 236 Символ: м
Код: 237 Символ: н
Код: 238 Символ: о
Код: 239 Символ: п
Код: 240 Символ: р
Код: 241 Символ: с
Код: 242 Символ: т
Код: 243 Символ: у
Код: 244 Символ: ф
Код: 245 Символ: х
Код: 246 Символ: ц
Код: 247 Символ: ч
Код: 248 Символ: ш
Код: 249 Символ: щ
Код: 250 Символ: ъ
Код: 251 Символ: ы
Код: 252 Символ: ь
Код: 253 Символ: э
Код: 254 Символ: ю
Код: 255 Символ: я

Их достаточно просто получить написав такую программу :

Open «allkeycode.txt» for output as #1

print #1, » Код : » & i & » Символ : » & chr(i)

Источник

Автоматизация рутины в Microsoft Excel при помощи VBA

В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.

VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.

Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.

Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.

Поэтому, увы, будем учить Visual Basic.

Чуть-чуть подготовки и постановка задачи

Итак, поехали. Открываем Excel.

Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.

Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):

Читайте также:  Какие версии PS3 прошиваются а какие нет

То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).

Результат, которого хотим добиться, выглядит примерно так:

Разумеется, если смотреть прайс только на компьютере, то можно добавить фильтры и будет гораздо удобнее искать нужный товар. Однако мы хотим научится кодить и задача вполне подходящая, не так ли?

Кодим

Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».

И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».

Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:

Напишем Hello World:

Sub FormatPrice()
MsgBox «Hello World!»
End Sub

И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.

Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.

Примеры синтаксиса

‘ Процедура. Ничего не возвращает
‘ Перегрузка в VBA отсутствует
Sub foo(a As String , b As String )
‘ Exit Sub ‘ Это значит «выйти из процедуры»
MsgBox a + «;» + b
End Sub

‘ Функция. Вовращает Integer
Function LengthSqr(x As Integer , y As Integer ) As Integer
‘ Exit Function
LengthSqr = x * x + y * y
End Function

Sub FormatPrice()
Dim s1 As String , s2 As String
s1 = «str1»
s2 = «str2»
If s1 <> s2 Then
foo «123» , «456» ‘ Скобки при вызове процедур запрещены
End If

Dim res As sTRING ‘ Регистр в VB не важен. Впрочем, редактор Вас поправит
Dim i As Integer
‘ Цикл всегда состоит из нескольких строк
For i = 1 To 10
res = res + CStr(i) ‘ Конвертация чего угодно в String
If i = 5 Then Exit For
Next i

Dim x As Double
x = Val( «1.234» ) ‘ Парсинг чисел
x = x + 10
MsgBox x

On Error Resume Next ‘ Обработка ошибок — игнорировать все ошибки
x = 5 / 0
MsgBox x

On Error GoTo Err ‘ При ошибке перейти к метке Err
x = 5 / 0
MsgBox «OK!»
GoTo ne

ne:
On Error GoTo 0 ‘ Отключаем обработку ошибок

‘ Циклы бывает, какие захотите
Do While True
Exit Do

Loop ‘While True
Do ‘Until False
Exit Do
Loop Until False
‘ А вот при вызове функций, от которых хотим получить значение, скобки нужны.
‘ Val также умеет возвращать Integer
Select Case LengthSqr(Len( «abc» ), Val( «4» ))
Case 24
MsgBox «0»
Case 25
MsgBox «1»
Case 26
MsgBox «2»
End Select

‘ Двухмерный массив.
‘ Можно также менять размеры командой ReDim (Preserve) — см. google
Dim arr(1 to 10, 5 to 6) As Integer
arr(1, 6) = 8

Dim coll As New Collection
Dim coll2 As Collection
coll.Add «item» , «key»
Set coll2 = coll ‘ Все присваивания объектов должны производится командой Set
MsgBox coll2( «key» )
Set coll2 = New Collection
MsgBox coll2.Count
End Sub

Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.

Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.

Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.

Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.

Надеюсь, что этого Вам хватит, чтобы не пугаться кода и самостоятельно написать какое-нибудь домашнее задание по информатике. По ходу поста я буду ненавязчиво знакомить Вас с новыми конструкциями.

Кодим много и под Excel

В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.

Sub FormatPrice()
Sheets( «result» ).Cells.Clear
Sheets( «data» ).Activate
End Sub

Работа с диапазонами ячеек

Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.

Примеры работы с Range

Sheets( «result» ).Activate
Dim r As Range
Set r = Range( «A1» )
r.Value = «123»
Set r = Range( «A3,A5» )
r.Font.Color = vbRed
r.Value = «456»
Set r = Range( «A6:A7» )
r.Value = «=A1+A3»

Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:

  1. Считали группы из очередной строки.
  2. Пробегаемся по всем группам в порядке приоритета (вначале более крупные)
    1. Если текущая группа не совпадает, вызываем процедуру AddGroup(i, name), где i — номер группы (от номера текущей до максимума), name — её имя. Несколько вызовов необходимы, чтобы создать не только наш заголовок, но и всё более мелкие.
  3. После отрисовки всех необходимых заголовков делаем еще одну строку и заполняем её данными.

Для упрощения работы рекомендую определить следующие функции-сокращения:

Function GetCol(Col As Integer ) As String
GetCol = Chr(Asc( «A» ) + Col)
End Function

Function GetCellS(Sheet As String , Col As Integer , Row As Integer ) As Range
Set GetCellS = Sheets(Sheet).Range(GetCol(Col) + CStr(Row))
End Function

Читайте также:  Плюсы и минусы электротранспорта

Function GetCell(Col As Integer , Row As Integer ) As Range
Set GetCell = Range(GetCol(Col) + CStr(Row))
End Function

Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».

Глобальные переменные

Option Explicit ‘ про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3

FormatPrice

Sub FormatPrice()
Dim I As Integer ‘ строка в data
CurRow = 1
Dim Groups(1 To GroupsCount) As String
Dim PrGroups(1 To GroupsCount) As String

Sheets( «data» ).Activate
I = 2
Do While True
If GetCell(0, I).Value = «» Then Exit Do
‘ .
I = I + 1
Loop
End Sub

Теперь надо заполнить массив Groups:

На месте многоточия

Dim I2 As Integer
For I2 = 1 To GroupsCount
Groups(I2) = GetCell(I2, I)
Next I2
‘ .
For I2 = 1 To GroupsCount ‘ VB не умеет копировать массивы
PrGroups(I2) = Groups(I2)
Next I2
I = I + 1

И создать заголовки:

На месте многоточия в предыдущем куске

For I2 = 1 To GroupsCount
If Groups(I2) <> PrGroups(I2) Then
Dim I3 As Integer
For I3 = I2 To GroupsCount
AddHeader I3, Groups(I3)
Next I3
Exit For
End If
Next I2

Не забудем про процедуру AddHeader:

Перед FormatPrice

Sub AddHeader(Ty As Integer , Name As String )
GetCellS( «result» , 1, CurRow).Value = Name
CurRow = CurRow + 1
End Sub

Теперь надо перенести всякую информацию в result

For I2 = 0 To DataCount — 1
GetCellS( «result» , I2, CurRow).Value = GetCell(I2, I)
Next I2

Подогнать столбцы по ширине и выбрать лист result для показа результата

После цикла в конце FormatPrice

Sheets( «Result» ).Activate
Columns.AutoFit

Всё. Можно любоваться первой версией.

Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:

Sub AddHeader(Ty As Integer , Name As String )
Sheets( «result» ).Range( «A» + CStr(CurRow) + «:C» + CStr(CurRow)).Merge
‘ Чтобы не заводить переменную и не писать каждый раз длинный вызов
‘ можно воспользоваться блоком With
With GetCellS( «result» , 0, CurRow)
.Value = Name
.Font.Italic = True
.Font.Name = «Cambria»
Select Case Ty
Case 1 ‘ Тип
.Font.Bold = True
.Font.Size = 16
Case 2 ‘ Производитель
.Font.Size = 12
End Select
.HorizontalAlignment = xlCenter
End With
CurRow = CurRow + 1
End Sub

Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:

Поэтому чуть-чуть меняем код с добавлением стиля границ:

Sub AddHeader(Ty As Integer , Name As String )
With Sheets( «result» ).Range( «A» + CStr(CurRow) + «:C» + CStr(CurRow))
.Merge
.Value = Name
.Font.Italic = True
.Font.Name = «Cambria»
.HorizontalAlignment = xlCenter

Select Case Ty
Case 1 ‘ Тип
.Font.Bold = True
.Font.Size = 16
.Borders(xlTop).Weight = xlThick
Case 2 ‘ Производитель
.Font.Size = 12
.Borders(xlTop).Weight = xlMedium
End Select
.Borders(xlBottom).Weight = xlMedium ‘ По убыванию: xlThick, xlMedium, xlThin, xlHairline
End With
CurRow = CurRow + 1
End Sub

Осталось лишь добится пропусков перед началом новой группы. Это легко:

В начале FormatPrice

Dim I As Integer ‘ строка в data
CurRow = 0 ‘ чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String

В цикле расстановки заголовков

If Groups(I2) <> PrGroups(I2) Then
CurRow = CurRow + 1
Dim I3 As Integer

В точности то, что и хотели.

Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.

Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.

Спасибо за внимание.

Буду рад конструктивной критике в комментариях.

UPD: Перезалил пример на Dropbox и min.us.

UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.

Источник

Таблица кодов visual basic

Private Sub TextBox1_KeyPress ( ByVal KeyAscii _
As MSForms.ReturnInteger)
If Chr(KeyAscii) Or Chr(KeyAscii) > «9» _
And Chr(KeyAscii) Or Chr(KeyAscii) > «Я» _
And Chr(KeyAscii) Or Chr(KeyAscii) >»я» Then
MsgBox «Недопустимый символ!»
KeyAscii = 0
End If
End Sub

Теперь в текстовое поле можно будет ввести только русские буквы и цифры, остальные символы будут игнорироваться. Вид кода немного пугает, но на самом деле здесь все просто. Давайте рассмотрим его подробнее:
Private Sub TextBox1_KeyPress( ByVal KeyAscii _
As MSForms.ReturnInteger)

Это процедура обработки события KeyPress(Нажатия клавиш) для элемента TextBox1.Что-бы ее вызвать, нужно дважды щелкнуть на форме(на форме должен быть элемент TextBox), при этом откроется окно модуля формы. Вверху окна, слева, необходимо выбрать TextBox1, а справа KeyPress.

Oкно модуля формы
Идем дальше. KeyAscii — аргумент возвращающий стандартный числовой код клавиши ANSI. То есть существует таблица кодов, в которой каждому символу на клавиатуре присвоено определенное число. Например: русская заглавная буква “А”=192, а маленькая “а”=224. Чтобы конвертировать числовое значение кода в строковое, применяется функция Chr, как в нашем примере(Chr(KeyAscii) &lt «А»)
Ну вот, самое сложное позади. Дальше проще:
Если код KeyAscii в таблице кодов находится в диапазоне от 48 до 57:
( If Chr(KeyAscii) Or Chr(KeyAscii) > «9»),
и в диапазоне от 192 до 223:
( And Chr(KeyAscii) Or Chr(KeyAscii) > «Я»),
и в диапазоне от 224 до 255:
( And Chr(KeyAscii) Or Chr(KeyAscii) >»я» Then )
то данные символы будут доступны. Если нет, то символы будет отброшены(KeyAscii = 0) — нельзя будет их ввести.

Примеры

Private Sub TextBox1_KeyPress ( ByVal KeyAscii _
As MSForms.ReturnInteger)
If KeyAscii Or KeyAscii > «57» Then
MsgBox «Недопустимый символ!»
KeyAscii = 0
End If
End Sub

Если количество недопустимых символов небольшое, то удобнее воспользоваться следующим кодом:

Private Sub TextBox1_KeyPress ( ByVal KeyAscii _
As MSForms.ReturnInteger)
Dim Symbol As String
»!@#$%^&*()_+= » — Эти символы будут игнорироваться
Symbol = «!@#$%^&*()_+=»
If InStr(1, Symbol, Chr(KeyAscii)) > 0 Then KeyAscii = 0
End Sub

Можно сделать наоборот:

Private Sub TextBox1_KeyPress ( ByVal KeyAscii _
As MSForms.ReturnInteger)
Dim Symbol As String
»0123456789.-» — Можно ввести только эти символы
Symbol = «0123456789.-»
If InStr(1, Symbol, Chr(KeyAscii)) > 0 Then
Else
KeyAscii = 0
End If
End Sub

Если нужно, чтобы при нажатии на одну клавишу в текстовое поле заносилось значение другой клавиши — вот пример:

Private Sub TextBox1_KeyPress ( ByVal KeyAscii _
As MSForms.ReturnInteger)
If KeyAscii = Asc(«1») Then KeyAscii = Asc(«7»)
End Sub

Здесь вместо «1» будет «7». Кстати функция Asc — необходима для форматирования строкового значения кода в числовой(Противоположна функции Chr см.выше)

Виртуальные коды клавиш Windows

Private Sub TextBox1_KeyDown ( ByVal KeyCode _
As MSForms.ReturnInteger, ByVal Shift As Integer )
If KeyCode = vbKeyControl Then MsgBox «Нажата клавиша Ctrl »
‘Если нажат «Ctrl», то выскакивает сообщение
End Sub

Здесь в отличии процедуры обработки события KeyPress, процедура KeyDown.Для ее вызова нужно дважды щелкнуть на форме (на форме должен быть элемент TextBox),при этом откроется окно модуля формы. Вверху окна, слева, необходимо выбрать TextBox1,а справа KeyDown(также, как для события KeyPress, см.выше).
vbKeyControl – константа описывающая клавишу «Ctrl»

Читайте также:  Коды переработки которые должен знать каждый

Источник

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:

Источник

Специальные символы в коде (Visual Basic)

Иногда в коде необходимо использовать специальные символы, то есть символы, не являющиеся алфавитными или числовыми. Знаки пунктуации и специальные символы в Visual Basic кодировке имеют различные варианты использования, от организации текста программы до определения задач, выполняемых компилятором или скомпилированной программой. Эти знаки не определяют операции, подлежащие выполнению.

Круглые скобки

Используйте круглые скобки при определении процедуры, например Sub или Function . Все списки аргументов процедур необходимо заключать в круглые скобки. Также круглые скобки используются для помещения переменных или аргументов в логические группы, особенно для переопределения порядка приоритета операторов по умолчанию в сложном выражении. Это показано в следующем примере.

После выполнения предыдущего кода значение d равно 8,225, а значение e равно 3. Вычисление для d использует приоритет по умолчанию / over + и эквивалентен d = b + (c / a) . Круглые скобки в вычислении для e переопределения приоритета по умолчанию.

Разделители

Разделители выполняют свои имена: они разделяют разделы кода. В Visual Basic символ разделителя является двоеточием ( : ). Используйте разделители, если требуется включить несколько операторов в одну строку, а не отдельные строки. Это экономит пространство и повышает удобочитаемость кода. В следующем примере показаны три инструкции, разделенные двоеточиями.

Символ двоеточия ( : ) также используется для обозначения метки оператора. Дополнительные сведения см. в разделе инструкции. Метки.

Объединение

Используйте & оператор для объединения или связывания строк. Не путайте его с + оператором, который добавляет вместе числовые значения. При использовании + оператора для сцепления с числовыми значениями можно получить неверные результаты. В следующем примере это показано.

После выполнения предыдущего кода значение resultA равно 21,01, а значение resultB равно «10,0111».

Операторы доступа к членам

Для доступа к члену типа используется оператор dot ( . ) или восклицательный знак ( ! ) между именем типа и именем члена.

Точка (.) Станции

Используйте . оператор для класса, структуры, интерфейса или перечисления в качестве оператора доступа к членам. Элемент может быть полем, свойством, событием или методом. Это показано в следующем примере.

Восклицательный знак (!) Станции

Оператор используется ! только для класса или интерфейса в качестве оператора доступа в словаре. Класс или интерфейс должен иметь свойство по умолчанию, принимающее один String аргумент. Идентификатор, непосредственно следующий за ! оператором, становится значением аргумента, передаваемым в свойство по умолчанию в виде строки. В следующем примере это показано.

В трех строках вывода MsgBox отображается значение 32856 . В первой строке используется традиционный доступ к свойству index , а во втором используется тот факт, который index является свойством по умолчанию класса hasDefault , а третий использует словарный доступ к классу.

Обратите внимание, что второй операнд ! оператора должен быть допустимым Visual Basic идентификатором, не заключенным в двойные кавычки ( » » ). Иными словами, нельзя использовать строковый литерал или строковую переменную. Следующее изменение в последней строке MsgBox вызова приводит к ошибке, поскольку «X» является заключенным строковым литералом.

«Dictionary access returns » & hD!»X»)

Ссылки на коллекции по умолчанию должны быть явными. В частности, нельзя использовать ! оператор для переменной с поздним связыванием.

! Символ также используется в качестве Single символа типа.

Источник

Adblock
detector