Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

Функция Left

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

Пример

Пользовательская функция FIO преобразует фамилию, имя и отчество, заданные полностью, в фамилию и инициалы.

Function FIO(A, B, C)

FIO = A & " " & Left(String:=B, Length:=1) & ". " & Left(C, 1) & "."

End Function

Sub call_fio()

Dim A As String

A = FIO("Толстой", "Лев", "Николаевич")

Debug.Print A

End Sub

Для получения фамилии и инициалов в одной строке применен оператор сцепления. Функция Left выделяет первый символ из имени и фамилии. При вызове этой функции использовано произвольное и позиционное расположение аргументов. Аргументы вызывающей процедуры заданы текстовыми константами.

Функция Instr

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

Синтаксис InStr([start,] string1, string2[,compare])

  • start – начальная позиция поиска. Необязательный параметр;

  • string1 – строка, в которой осуществляется поиск подстроки;

  • string2 – искомая подстрока;

  • compare – способ сравнения:

  • 0 – сравнение двоичных кодов, прописные и строчные символы различны,

  • 1 – текстуальное сравнение, прописные и строчные символы считаются равными.

Пример

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

Function number_liter(atext)

Dim i As Integer, l As Integer

Dim v As Integer, n As Integer

n = 0

l = Len(atext)

For i = 1 To l

v = InStr(i, atext, " ")

If v > 0 Then

n = n + 1

i = v

Else

Exit For

End If

Next i

number_liter = l – n

End Function

Sub main_liter()

' основная процедура

Dim text As String

text = InputBox(Prompt:="Введите строку текста")

Debug.Print "в строке ", number_liter(text), "символов"

End Sub

В цикле ForNext начальная позиция поиска возрастает – устанавливается в позицию найденного пробела.

Функция Instr используется для поиска пробела в заданной строке. Подсчитывается количество пробелов, которое затем вычитается из длины строки

Функция Chr

Функция Chr преобразует в символ заданное десятичное число – ASCII код символа. Коды символов в кодовой таблице см. в Help, раздел Character set.

Пример

Процедура создает одномерный массив, содержащий буквы латинского или русского алфавита в соответствии с установкой пользователя.

Sub alphabet()

Dim a() As String*1

Dim i As Integer, n As Integer, code As Integer

Dim flag As Variant

flag = MsgBox("Латинский алфавит?", vbYesNo)

Select Case flag

Case vbYes

code = 65 ‘код латинской буквы A

n = 26

Case Else

code = 192 ‘код русской буквы А

n = 32

End Select

ReDim a(n)

For i = 1 To n

a(i) = Chr(code)

Debug.Print a(i)

code = code + 1

Next i

End Sub

Массив a является одномерным массивом, каждый элемент которого – один символ. В процедуре анализируется возвращаемое функцией MsgBox значение, соответствующее нажатию кнопки Yes или No, включенных в окно сообщения константой vbYesNo.

Если выбран латинский алфавит (vbYes), то устанавливается код латинской буквы A и количество элементов массива 26. При выборе русского алфавита (vbNo) устанавливается код русской буквы А и количество элементов массива 32.