Ответы на вопросы по VBA. 1 Опишите модификатор Public. Для чего он, с какими элементами языка vba. Приведите 3 примера и в каждом укажите, что означает в примере использование Public
Скачать 245.69 Kb.
|
ПРЕОБРАЗОВАНИЕ ТИПОВ7. Запишите в общем виде форму вызова функции, которая возвращает преобразованное в текстовый тип данных значение числового типа. Приведите 3 примера и в каждом укажите, что вернёт функция. CStr – преобразование в тип String. variableorproperty=CStr(expression) Variableorproperty – любая текстовая переменная или свойство. Expression – любое текстовое выражение.
(8) Запишите в общем виде форму вызова функции, которая возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа. Приведите 3 примера и в каждом укажите, что вернёт функция. Val(строка) Обязательный строковый аргумент — любое допустимое строковое выражение. Функция Val перестает считывать строку на первом символе, которая не может быть распознана как часть числа. Символы и знаки, которые обычно считаются частью числа (например, знак доллара и запятая), не распознаются. Однако функция распознает префиксы &O системы счисления (восьмеричные) и &H (для шестнадцатеричного). Пробелы, символы табуляции и знаки перевода строк удаляются из значения аргумента. Примеры. 1. В следующем примере возвращается значение 2121171: Val(" 2121 171th Street N.E.") 2. В приведенном ниже коде функция Val возвращает десятичное значение – 1 для шестнадцатеричного значения, отображаемого следующим образом: Val("&HFFFF") 3. В этом примере функция Val возвращает числа, содержащиеся в строке. Dim MyValue MyValue = Val("2263") ' Вернется 2263. MyValue = Val(" 2 26 3") ' Вернется 2263. MyValue = Val("18 and 57") ' Вернется 18. (9) Запишите в общем виде форму вызова функции, которая возвращает целую часть заданного числа. Приведите 4 примера и в каждом укажите, что вернёт функция. Int(число) Fix(число) Обязательный аргумент Number — это значение типа Double или любое допустимое числовое выражение. Если аргумент число содержит нулевое значение, возвращается нулевое значение. Примеры. В этих примерах показано, как функции Int и Fix возвращают целые части чисел. Если используется отрицательный числовой аргумент, функция Int возвращает первое отрицательное целое число, которое меньше или равно этому числу; функция Fix возвращает первое отрицательное целое число, которое меньше или равно этому числу. 1. Dim MyNumber MyNumber = Int(99.8) ' Вернется 99. MyNumber = Fix(99.2) ' Вернется 99. 2. Dim MyNumber MyNumber = Int(-99.8) ' Вернется -100. MyNumber = Fix(-99.8) ' Вернется -99. 3. Dim MyNumber MyNumber = Int(-99.2) ' Вернется -100. MyNumber = Fix(-99.2) ' Вернется -99. 4. Private Sub Numeber() Debug.Print Int(1.2) 'возвращает 1 Debug.Print Int(-1.2) 'возвращает -2 End Sub (10) Запишите в общем виде форму вызова функции, которая возвращает значение даты, полученное из строки. Приведите 3 примера и в каждом укажите, что вернёт функция. Date() — возвращает текущую системную дату. Dim MyDate MyDate = Date ' MyDate содержит текущую системную дату. Примеры. 1.Sub dateeee() Dim a as Variant a = date() msgbox "Дата: " & a End Sub ‘После выполнения функции будет следующее: Дата: 00/00/0000(Вместо 0 будет дата) 2.DatePart() — функция возвращает указанную часть даты (например, только год, только месяц или только день недели), на основании заданной даты. Dim TheDate As Date ' Declare variables. Dim Msg TheDate = InputBox("Enter a date:") Msg = "Quarter: " & DatePart("yyyy", TheDate) MsgBox Msg В этом примере берется дата и с помощью функции DatePart отображается год, на который она приходится. 3.В этом примере берется некоторая дата и с помощью функции DateAdd отображается дата, соответствующая ей через указанное число месяцев в будущем. Dim FirstDate As Date 'Объявить переменные. Dim IntervalType As String Dim Number As Integer Dim Msg As String IntervalType = "m" ' "m" указывает месяцы как интервал. FirstDate = InputBox("Введите дату") Number = InputBox("Введите количество месяцев для добавления ") Msg = "New date: " & DateAdd(IntervalType, Number, FirstDate) MsgBox Msg (11) Запишите в общем виде форму вызова процедуры (функции), которая удаляет пробелы в начале и в конце строки. Приведите 3 примера и в каждом укажите, что вернёт функция или сделает процедура. LTrim(строка) — удаление пробелов слева; RTrim(строка) — удаление пробелов справа; Trim(строка) — удаление пробелов слева и справа. Selection.Text = Trim(Selection.Text) Примеры. 1. Function myTrim(text As String) As String 'Удаляем пробелы слева и справа строки text = Trim(text) 'Удаляем лишние пробелы внутри строки Do While InStr(text, " ") text = Replace(text, " ", " ") Loop myTrim = text End Function 2. Sub Primer() Dim a1 As String a1 = " Солнце светит сильно " MsgBox Trim(a1) & vbCrLf _ & WorksheetFunction.Trim(a1) _ & vbCrLf & myTrim(a1) End Sub В этом примере функция удалит лишние пробелы в заданном примере a1 3. With Selection.Range .Collapse Direction:=Word.wdCollapseEnd .Move Unit:=wdCharacter, Count:=-1 .Delete Unit:=wdCharacter, Count:=-1 End With Пробелы убираются без Trim 12 вопрос Запишите в общем виде форму вызова процедуры (функции), которая возвращает символ ANSI, соответствующий числовому значению параметра. Приведите 3 примера и в каждом укажите, что вернёт функция или сделает процедура. Функция Chr Chr(CharCode) Функция Chr(Character)позволяет получить символ по значению его числового кода ANSI или Unicode Возвращаемое значение Функции Chr возвращают значение субтипа String типа Variant, содержащее символ, соответствующий указанному коду символа ANSI. Параметры CharCode Обязательный аргумент является значением типа Long, определяющим символ. Обычно, функция Chr применяется при вставке в текстовые строки непечатных символов(возврат каретки, перевод строки, табулятор и т.д.) Пример 1 Dim MyChar MyChar = Chr(65) Debug Print MyChar ' Возвращается A. Пример 2 Dim MyChar MyChar = Chr(62) Debug Print MyChar ' Возвращается >. Пример 3 Dim MyChar MyChar = Chr(37) Debug Print MyChar ' Возвращается %. 13 вопрос Запишите в общем виде форму вызова процедуры (или функции), которая возвращает текущую системную дату и время. Приведите 2 примера программных конструкций с данной функцией на получение данных о текущем дне недели и о вычислении числа дней до Нового года. Функция Now возвращает значение Variant (Date), указывающее текущую дату и время в соответствии с системной датой и временем компьютера. Общий вид: Mynow = Now Пример 1 Получение текущего дня недели: Sub Дата() Dim Mynow As Date Mynow = Now MyWeekday = Weekday(Mynow) ' возвращает номер дня недели, где 1- воскресенье,...,7-суббота MsgBox MyWeekday End Sub Пример 2 Вычисление числа дней до Нового года: Sub www() Dim d1 As Date, d2 As Date d1 = #1/1/2022# 'Задаём дату Нового года d2 = Now 'Задаём нашу дату MsgBox DateDiff("d", d2, d1) ' количество дней между двумя датами End Sub 14 вопрос Запишите в общем виде форму вызова функции для определения длины строки. Приведите 3 примера: определение числа символов в документе, размер максимального раздела и какой-то свой. Функция Len Len(String | Varname) LenB(String | Varname) Функция Len вычисляет число символов в строке или размер заданной переменной. Из двух возможных аргументов должен быть указан только один. Для определяемых пользователем типов Len возвращает размер, который требуется для записи переменной в файл Возвращаемое значение Возвращает значение типа Long, содержащее число символов в строке или число байт, необходимое для размещения переменной Параметры String Обязательный аргумент - любое допустимое строковое выражение Varname Обязательный аргумент - любое допустимое имя переменной. Если выражение имеет значение Null, то возвращается Null. Если же аргумент имеет значение типа Variant, то функция Len обрабатывает его так же, как и значение типа String, и всегда возвращает число содержащихся в нем символов Пример 1 (Свой) Dim A as Byte A = Len("Русский_Проект")' Вычисляем длину строки Русский_Проект Print A Пример 2 Определение числа символов в документе (не факт, что код корректный, поэтому следует перепроверить) Public Sub A2() Dim myRange as String Set myRange = ActiveDocument.Range ' как диапазон можем взять весь активный документ myRange.SetRange Start:=myRange.Start, _ End:=ActiveDocument.Range.End Dim k k = Len(myRange) ' находим длину файла End Sub Пример 3 размер максимального раздела готового кода нет, поэтому кидаю только наработки Set myRange = ActiveDocument.Paragraphs(1).Range ' как диапазон берём 1 абзац документа myRange.SetRange Start:=myRange.Start, _ End:=ActiveDocument.Paragraphs(1).Range.End т.е. весь подсчёт сводится к строчке Len(myRange) 15 вопрос Запишите в общем виде форму вызова функции, которая выделяет из строки подстроку с указанным числом символов, начиная с некоторой позиции. Приведите 2 примера и в каждом укажите, что вернёт функция. Возвращает значение типа Variant (String), содержащее указанное число символов строки. Синтаксис Mid(строка, начало, [ длина ]) Cинтаксис функции Mid состоит из следующих именованных аргументов:
Примеры: Dim MyString, FirstWord, LastWord, MidWords MyString = "Mid Function Demo" 'Создаём текстовую строку. FirstWord = Mid(MyString, 1, 3) ' Возвращает "Mid". LastWord = Mid(MyString, 14, 4) ' Возвращает "Demo". MidWords = Mid(MyString, 5) ' Возвращает "Function Demo". 16. Запишите в общем виде форму вызова функции, которая удаляет пробелы в начале строки. Приведите 2 примера и в каждом укажите, что вернёт функция. Возвращает строку, содержащую копию указанной строки без начальных пробелов Синтаксис: LTrim(строка) Примеры: Dim MyString, String1 MyString = " anyString" ‘заполнение строки String1 = LTrim(MyString) ‘переменная «String1» будет иметь значение «anyString» Dim s s = " string" ‘заполнение строки MsgBox LTrim(s) ‘будет сообщение с текстом «string» 17. Запишите в общем виде форму вызова процедуры (или функции), которая ищет подстроку в строке, но начинает поиск с конца строки и возвращает позицию последнего вхождения подстроки. Приведите 3 примера и в каждом укажите, что вернёт функция или сделает процедура. Возвращает положение вхождения одной строки в рамках другой, начиная с конца строки. Синтаксис: InStrRev(stringcheck, stringmatch[, start[, compare]]) Примеры: Dim String1, Search, MyPos String1 ="XXpXXpXXPXXP" 'строка, в которой будем искать Search = "P" 'будем искать символ "P" 'бинарное сравнение строк начиная с позиции 10, возвращает 9 MyPos = InStrRev(String1, Search, 10, 0) 'сравнение строк как текст начиная со следующей позиции, возвращает 12 MyPos = InStrRev(String1, Search, -1, 1) 'бинарное сравнение строк по умолчанию (последний аргумент пропущен) MyPos = InStrRev(String1, Search, 8) 'возвращает 0 18. Запишите в общем виде форму вызова процедуры (функции), которая выделяет из строки указанное количество символов справа. Приведите 3 примера и в каждом укажите, что вернёт функция или сделает процедура. Эта функция извлекает правую часть строки с заданным количеством символов. Синтаксис: Right(string, length) Примеры: Dim MyString, String1 MyString = "Hello World" 'заполнение строки String1 = Right(MyString, 1) 'Возвращает "d" String1 = Right(MyString, 6) 'Возвращает " World" String1 = Right(MyString, 20) 'Возвращает "Hello World" 19. Запишите в общем виде форму вызова процедуры (функции), которая ищет подстроку в строке. Возвращает позицию первого вхождения строки в строку с указанной позиции. Приведите 2 примера и в каждом укажите, что вернёт функция или сделает процедура. Функция, которая предназначена для определения номера позиции первого вхождения одной строки в другую. Синтаксис: InStr([начало], строка1, строка2, [сравнение]) Сокращенный вариант: InStr(строка1, строка2) Примеры: Dim MyString, Search, String1 MyString ="Русский_Проект" 'строка, в которой будем искать Search = "Р" 'будем искать символ "P" 'Посимвольное сравнение, начиная с позиции 4. Возвращает 10 String1 = Instr(4, MyString, Search, vbTextCompare) 'Двоичное сравнение, начиная с позиции 1. Возвращает 1 String1 = Instr(1, MyString, Search, 0) 'Сравнение является двоичным по умолчанию (последний аргумент опущен) String1 = Instr(MyString, Search) 'Возвращает 1 String1 = Instr(1, MyString, "W") 'Возвращает 0 Вопрос 20. Запишите в общем виде форму вызова процедуры (функции), которая позволяет заменить в строке одну подстроку другой. Приведите 2 примера и в каждом укажите, что вернёт функция или сделает процедура. Общий вид: Replace (<строка>, <строка Поиск>, <строка Замена>) Пример: Sub Primer1() Dim a a = "идёт медведь, идёт лиса, идёт грач" a = Replace(a, "идёт", "бежит”) End Sub ‘Заменит «идёт медведь, идёт лиса, идёт грач» на «бежит медведь, бежит лиса, бежит грач» Sub Primer2() Dim b b = "бежит медведь, бежит лиса, бежит грач" b = Replace(b, "бежит", " идёт”) End Sub ‘Заменит «бежит медведь, бежит лиса, бежит грач» на «идёт медведь, идёт лиса, идёт грач» Вопрос 21. Запишите в общем виде форму вызова процедуры (или функции), которая даёт возможность преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.). Приведите 3 примера и в каждом укажите, что вернёт функция или сделает процедура. Общий вид: StrConv(строка, Преобразование , [LCID] ) Пример: Sub Primer1() Dim a a = StrConv("чиСтота – зАЛОг здОроВья", 1) End Sub ‘Преобразует "чиСтота – зАЛОг здОроВья" в “ЧИСТОТА – ЗАЛОГ ЗДОРОВЬЯ" Sub Primer2() Dim b b = StrConv("чиСтота – зАЛОг здОроВья", 2) End Sub ‘Преобразует "чиСтота – зАЛОг здОроВья" в «чистота – залог здоровья» Sub Primer3() Dim c c = StrConv("чиСтота – зАЛОг здОроВья", 3) End Sub ‘Преобразует "чиСтота – зАЛОг здОроВья" в «Чистота – Залог Здоровья» Вопрос 22. Запишите в общем виде форму вызова процедур (или функций), которые позволяют перевести строку в нижний и верхний регистры соответственно. Приведите по 2 примера каждой. Общий вид: LCase((<строка>) и UCase((<строка>) LCase – нижний регистр, UCase – верхний регистр Пример: Sub Primer1U () Dim LowerCase, UpperCase LowerCase = "Hello World" UpperCase = UCase(LowerCase) End Sub ‘Преобразует "Hello World" в «HELLO WORLD» Sub Primer2U () Dim LowerCase, UpperCase LowerCase = "World" UpperCase = UCase(LowerCase) End Sub ‘Преобразует "World" в «WORLD» Sub Primer1L () Dim LowerCase, UpperCase LowerCase = " HELLO WORLD " UpperCase = LCase(LowerCase) End Sub ‘Преобразует " HELLO WORLD " в «hello world» Sub Primer2L () Dim LowerCase, UpperCase LowerCase = " WORLD " UpperCase = LCase(LowerCase) End Sub ‘Преобразует " WORLD " в «world» Вопрос 23. Запишите в общем виде форму вызова процедуры вывода на экран окна сообщения. Приведите 3 примера. Общий вид: MsgBox «текст сообщения», встроенные константы, «заголовок окна» Пример: Sub Primer1 () MsgBox "Первый пример" End Sub ‘Будет выведено сообщение “Первый пример” Sub Primer2 () MsgBox "Второй пример", , "2" End Sub ‘Будет выведено сообщение “Второй пример” с заголовком “2” Sub Primer3 () MsgBox "Третий пример", , "3" End Sub ‘Будет выведено сообщение “Третий пример” с заголовком “3” 24. Запишите в общем виде форму вызова функции для ввода текстовой информации пользователем во время работы приложения. Приведите 3 примера. Отображает приглашение в диалоговом окне, ждет, пока пользователь введет текст или нажмет кнопку, и возвращает строку с содержимым текстового поля. Общий вид: InputBox(prompt, [ title ], [ default ], [ xpos ], [ ypos ], [ helpfile, context ]), где prompt – обязательный аргумент. Строковое выражение, отображающееся в диалоговом окне. Максимальная длина строки аргумента сообщение составляет приблизительно 1024 знака и зависит от их ширины. title – необязательно. Строковое выражение, отображаемое в заголовке диалогового окна. Если аргумент заголовок пропущен, в заголовке выводится имя приложения. default – необязательно. Строковое выражение, отображаемое в текстовом поле в качестве ответа по умолчанию, если ввод вообще не будет выполнен. Если пропустить аргумент default, соответствующее текстовое поле отображается пустым. xpos – необязательно. Числовое выражение, задающее в твипах расстояние по горизонтали от левого края диалогового окна до левого края экрана. Если аргумент xpos пропускается, диалоговое окно выравнивается по горизонтальной оси. ypos – необязательно. Числовое выражение, задающее в твипах расстояние по вертикали от верхнего края диалогового окна до верхнего края экрана. Если аргумент ypos пропускается, диалоговое окно позиционируется по вертикальной оси и отстоит от верхнего края окна примерно на треть от высоты экрана. helpfile – необязательно. Строковое выражение, определяющее файл, в котором содержится контекстная справка для данного диалогового окна. Если задан аргумент helpfile, необходимо также указать аргумент context. context – необязательный аргумент. Числовое выражение, представляющее собой номер контекста, присвоенный автором справки соответствующему разделу. Если задан аргумент context, необходимо также указать аргумент helpfile. Примеры:
25. Запишите в общем виде форму вызова процедуры (или функции), которая возвращает одномерный массив из элементов строки. Приведите 3 примера и в каждом укажите, что вернёт функция или сделает процедура. Общий вид: Общий вид: Split(expression, [ delimiter, [ limit, [ compare ]]]) expression - обязательная часть. Строковое выражение, содержащее подстроки и разделители. Если аргумент expression является строкой нулевой длины (""), функция Split возвращает пустой массив — без элементов и данных. delimiter - необязательно. Строковый символ, используемый для разделения подстрок. Если этот аргумент не указан, в качестве разделителя используется знак пробела (" "). Если аргумент delimiter является строкой нулевой длины, возвращается массив с одним элементом, содержащим всю строку из аргумента expression. limit - необязательно. Количество возвращаемых подстрок; – 1 указывает, что возвращаются все подстроки. compare - необязательно. Представляет собой числовое значение, указывающее вид сравнения, которое выполняется при оценке подстрок. Примеры:
26. Запишите в общем виде форму вызова функции, которая возвращает строку, отформатированную в соответствии с инструкциями, содержащимися в формате выражения. Приведите 3 примера и в каждом укажите, что вернёт функция. Функция Format Возвращает Variant (String), содержащий выражение expression, отформатированное в соответствии с инструкциями, включенными в выражение формата. Общий вид: Format(Expression, [ Format ], [ FirstDayOfWeek ], [ FirstWeekOfYear ]) Expression - Обязательный атрибут. Любое допустимое выражение. Format - Необязательный атрибут. Допустимое именованное или определяемое пользователем выражение формата. FirstDayOfWeek - Необязательный атрибут. Константа, задающая первый день недели. FirstWeekOfYear - Необязательный атрибут. Константа, задающая первую неделю года. Примеры:
27. Запишите в общем виде форму вызова функции, которая возвращает выровненную по правому краю строку, содержащую указанную строку, настроенную под указанную длину. Приведите 3 примера и в каждом укажите, что вернёт функция. |