Ответы на вопросы по VBA. 1 Опишите модификатор Public. Для чего он, с какими элементами языка vba. Приведите 3 примера и в каждом укажите, что означает в примере использование Public
Скачать 245.69 Kb.
|
Правила комментированияВ следующей таблице приведены общие рекомендации по тому, какие типы комментариев могут предшествовать разделу кода. Это предложения; Visual Basic не применяет правила для добавления комментариев. В комментарий по желанию автора кода может быть включена любая информация.
Также рекомендуется принять во внимание следующие моменты. Объявление каждой важной переменной должно предшествовать комментарию, описывающему ее назначение. Имена переменных, элементов управления и процедур должны быть функционально понятными, чтобы комментарии требовались только в случае особо сложных деталей реализации. Комментарии не могут располагаться за последовательностью продолжения строки в той же строке. Можно добавить или удалить символы комментария для блока кода, выбрав одну или несколько строк кода и выбрав Комментарий ( ) и раскомментировать ( ) на панели инструментов изменить . Примеры: text1.Text = "Hi!" ‘Это пример комментария text1.Text = "Hi!" ‘Это пример двойного комментария text2.Text = "World!" ‘Это пример двойного комментария Комментирование отдельной строки с использованием ключевого слова REM в VBAЭто наименее рекомендуемый метод, потому что у него есть свои подводные камни: Это ключевое слово не позволяет вам добавлять комментарии где-либо в середине вашего кода. Для правильной оценки комментария всегда требуется хотя бы один пробел между REM и вашей строкой текста. Пример 1: Sub CommentEx2() Rem Комментарий End Sub Пример 2: Sub CommentEx2() Dim a, b, c a = 5 b = 15 c = a + b MsgBox "" & c Rem c – сумма а и b End Sub 66. Запишите в общем виде форму вызова оператора, который устанавливает ссылку на вновь созданный или существующий объект. Приведите 3 примера. Укажите к каким объектам он не применим и почему. Синтаксис: Set Obj = {[ New ] Objpr | Nothing } Синтаксис оператора Set состоит из следующих элементов.
Чтобы элемент objectvar был допустимым, он должен представлять собой тип объекта, согласующийся с назначаемым ему объектом. Примеры: Dim mas(1 to 4) As Form1 Set mas(1) = New Form1 Set mas(2) = New Form1 Set mas(3) = New Form1 Set mas(4) = New Form1 Dim YourObject, MyObject, MyStr Set MyObject = YourObject YourObject.Text = "Hello World" ' задаем значение MyStr = MyObject.Text ' возвращает "Hello World". YourObject. Set MyObject = Nothing ' опустошает объект Public Function odoc() 'Процедура создания Документа Dim TempPath As String Set doc = CreateNewWordDocument(TempPath) doc.Activate End Function 67. Запишите в общем виде форму вызова операторов изменения текущего диска и изменения текущего каталога. Приведите по 2 примера для каждого. Синтаксис: ChDir path для каталога и папки ChDrive “название диска” для диска Обязательный path аргумент Path — это строковое выражение , определяющее, какой каталог или папка становится новым каталогом или папкой по умолчанию. Аргумент path может содержать название диска. Если диск не указан, оператор ChDir изменяет каталог или папку по умолчанию на текущем диске. Инструкция chdir изменяет каталог или папку по умолчанию, но не изменяет диск по умолчанию. Другой оператор, ChDrive, изменяет диск, используемый по умолчанию. Пример: Chdir ".." ' Переход в папку на уровень выше Chdir "..\.." ' -"- на 2 уровня выше Chdir "..\..\DocDir" ' -"- на 2 уровня выше, а там - в указанную подпапку Chdir "C:\MyArchive" ' Обычное использование Инструкция для смены текущего диска (ChDrive) работает довольно примитивно. Так, вариант ChDrive "D" или ChDrive "С" определит текущим диском диск «D:». Из примера видно, что приводится только литерал, без двоеточия. В этом примере оператор ChDir используется для изменения текущего каталога или текущей папки. Если диск по умолчанию — C, диск по умолчанию остается в, даже если папка по умолчанию изменяется на папку на диске D: ChDir "D:\WINDOWS\SYSTEM" 68. Запишите в общем виде форму вызова всех операторов цикла с постусловиями. Приведите 2 примера для каждого. Цикл называется циклом с постусловием, если условие выхода из цикла стоит в конце, после тела цикла. Синтаксис: Do { While | Until } condition [ statements ] [ Continue Do ] [ statements ] [ Exit Do ] [ statements ] Loop ' -or- Do [ statements ] [ Continue Do ] [ statements ] [ Exit Do ] [ statements ]
69. Запишите в общем виде форму вызова всех операторов цикла с предусловиями. Приведите по 1 примеру каждого. Цикл Do...Loop, уточняемый оператором While, выполняется до тех пор, пока верно условие, задаваемое в цикле. Если же конструкция цикла уточняется оператором Until, то цикл выполняется до тех пор, пока заданное условие ложно. Синтаксис: Do While (Until) <условие> <блок операторов> Loop Цикл While … Wend также относится к циклам с условием. Данный оператор полностью соответствует структуре Do While … Loop. Синтаксис: While <условие> <блок операторов> Wend
Во всех примерах информационное сообщение MsgBox выведет число 105 70. Запишите в общем виде форму вызова оператора счетного цикла. Приведите 3 примера. Оператор For … Next это типовой цикл со счетчиком, выполняющий заданное число итераций. Синтаксис: For <счетчик> = <начЗначение> То <конЗначение> [Step <приращение>] <блок операторов> Next [<счетчик>]
71.Запишите в общем виде форму вызова оператора перебора счётного цикла. Приведите 2 примера. Оператор цикла For Each … Next относится к категории операторов объектного типа, т.е. применяется в первую очередь к коллекциям объектов, а также к массивам. Тело цикла выполняется фиксированное число раз, соответствующее числу элементов массива или коллекции. Синтаксис: For Each <элемент> In <группа> <блок операторов> Next [<элемент>]
72.Запишите в общем виде все форма вызова оператора выхода из цикла. Приведите 2 примера для каждого. Для досрочного завершения итерации и выхода из цикла применяется оператор Exit. Этот оператор применим в любой циклической структуре, кроме While … Wend Синтаксис: <начало_цикла> [<блок операторов1>] Exit (For | Do) [<блок операторов2>] [Exit (For | Do)] … <конец_цикла>
73. Запишите в общем виде форму вызова оператора условия. Приведите 4 примера так, чтобы среди них были варианты с одним выходом или с двумя. If … Then … Else … If … Then … ElseIf … Else … End If Примеры: 1) If условие Then действие Else действие 2) If условие Then действие … End If 3) If условие Then действие ElseIf условие Then действие … Else действие End If 4) If условие Then действие ElseIf условие Then действие … Else действие … End If … Else действие End If 74. Запишите в общем виде форму вызова оператора множественного выбора. Приведите 2 примера. SelectCase *выражение какого-либо типа данных* Case *одно из значений выражения* действие CaseElse действие EndSelect Примеры: 1) Dim number As Integer = 8 Select Case number Case 1 To 5 Debug.WriteLine("Between 1 and 5 ") Case 6, 7, 8 Debug.WriteLine("Between 6 and 8") Case 9 To 10 Debug.WriteLine("Equal to 9 or 10") Case Else Debug.WriteLine("Not between 1 and 10") End Select 2) a = 5 Select Case a Case 5: MsgBox "a=5" Case 7 To 9: MsgBox "a между 7 и 9" Case Else: MsgBox "a не подходит" End Select 75. Каким символом можно обеспечить, чтобы можно было записать 2 оператора в одной строке. Приведите 4 примера. Символ « : ». Примеры: 1) Dim text As String = "text" : MsgBox(text) 2) Dim a, b As Integer : a = 4 : b = a ^ 2 3) for i = 1 to 10: Arr[i] = I : next 4) If a = 1 Then b = 2 : If b = 2 Then c = 3 76. Запишите в общем виде форму вызова оператора, который позволяет переименовывать каталоги (папки) и файлы и перемещать файлы. Приведите 4 примера его использования. Name [Исходный файл] As [Новый файл] Примеры: 1) sFileName = "C:\WWW.xls" sNewFileName = "D:\WWW.xls" Name sFileName As sNewFileName 2) sFileName = "C:\WWW.xls" sNewFileName = "C:\WWW1.xls" Name sFileName As sNewFileName 3) sFileName = "C:\WWW.xls" sNewFileName = "C:\WWW1.xls" sNewFilePath = "D:\WWW1.xls" Name sFileName As sNewFileName Name sFileName As sNewFilePath 4) OldName = "C:\MYDIR\OLDFILE": NewName = "C:\YOURDIR\NEWFILE" Name OldName As NewName 77. Запишите в общем виде форму вызова оператора, который моделирует ввод с клавиатуры. Приведите 3 примера реальных ситуаций, когда это применимо. Общий вид: Prompt - обязательный аргумент, который задает в диалоговом окне информационное сообщение. Title - необязательный аргумент, который задает в диалоговом окне заголовок. Default - необязательный аргумент, который задает ответ по умолчанию, если ввод не будет выполнен пользователем. XPos - необязательный аргумент, который задает положение диалогового окна по горизонтальной оси. YPos - необязательный аргумент, который задает положение диалогового окна по вертикальной оси. HelpFile - необязательный аргумент, которая определяет файл, в котором содержится контекстная справка для данного диалогового окна. Если задан данный аргумент, также нужно указать аргумент Context. Context - необязательный аргумент, представляющий собой номер контекста, присвоенный автором справки соответствующему разделу. Если задан данный аргумент, также нужно указать аргумент HelpFile. Пример 1: в данном примере приводится ситуация вычисления значения y для заданной функции, после ввода пользователем значения ведется проверка, числовое значение или нет, после, если проверка показала, что значение числовое, вычисляется значение y и выводится пользователю с помощью MsgBox. Пример 2: в данном примере вычисляется площадь прямоугольника, сначала пользователя вводит значения сторон a и b, если они числовые, то вычисляется площадь и выводится с помощью MsgBox, в противном случае, выводится сообщение о том, что было введено не числовое значение. П ример 3: InputBox также можно использовать как средство доступа к форме, в нижеприведенном случае пользователю нужно ввести верный пароль для доступа к форме, если пароль верный, то выводится сообщение о том, что доступ разрешен и вызывается форма, если пароль не верный, то только выводится сообщение о том, что доступ запрещен. 78. Запишите метод объекта Document и все его параметры, который применяется, чтобы очистить буфер отмены изменений. Приведите 2 примера и в каждом укажите, что конкретно сделает метод. О бщий вид: Данный метод никакими параметрами не обладает. Пример 1: в данном примере поочередно печатаются 2 текста: “Текст1” и “Текст2”, так как метод UndoClear используется нами после того, как напечаталось “Текст1” и перед тем, как напечатать “Текст2”, то отменить написание “Текст1” будет нельзя, но отменить написание “Текст2” будет можно. Пример2: в данном примере поочередно печатаются 2 текста: “Текст1” и “Текст2”, так как метод UndoClear используется нами после того, как напечатались “Текст1” и “Текст2”, то отменить написание этих двух текстов будет нельзя. 79. Запишите метод объекта Document и все его параметры, который передаёт управление на Ваш документ, активизирует его. Приведите пример и опишите к чему приведёт выполнение указанной строчки. О бщий вид: Данный метод никакими параметрами не обладает. Пример: в данном примере открывается документ по заданному нами пути, это делается, потому что для активации докумена документ должен быть открыт, после открытия мы активируем данный документ и теперь при обращении к свойству ActiveDocument мы будем обращаться к активированному ранее документу. 80. Запишите метод объекта Range и все его параметры, который позволяет позволяет заменить заданный диапазон символов или выделения на новый абзац. Приведите 2 примера и в каждом укажите, что сделает метод с текстом. О бщий вид: Expression – переменная, которая представляет объект Range. Данный метод никакими параметрами не обладает. Пример 1: в данном примере диапазон всего документа заменяется на новый абзац и после этого печатается текст. Пример 2: в данном примере в начала документа печатается текст, затем диапазон всего документа заменяется на новый абзац при этом теряется написанный ранее текст, для того, чтобы избежать потерю текста надо печатать текст после использования метода InsertParagraph, как это сделано в первом примере. 81. Запишите метод объекта Range и все его параметры, который предназначен для вставки символа в заданное место диапазона или выделения. Приведите 2 примера и в каждом укажите, что сделает метод с текстом. Синтаксис: Text (нужный текст) Пример 1: Set gRange = ThisDocument.Range(9, 10) gRange.Text = " Insert " Данный фрагмент кода заменяет десятый символ документа на “ insert ”. Пример 2: With ActiveDocument.Content.Find .Text = "введите имя" .Replacement.Text = " Филипп Дик " .Execute Replace:=wdReplaceAll End With Данный фрагмент кода заменяет набор символов “введите имя” на “ Филипп Дик ”. 82. Запишите метод объекта Range и все его параметры, который вставляет заданный текст в конце диапазона или выделения. Приведите 2 примера и в каждом укажите, что сделает метод с текстом. Синтаксис: InsertAfter "нужный текст" – вставляет текст после выделенного текста/символа. Пример 1: Set gRange = ThisDocument.Range(9, 10) gRange.Bold = True gRange.InsertAfter "insert" Данный кусок кода вставляет слово “insert” после десятого символа в документе, затем делает жирным 10-й символ и вставленное слово “insert” Пример 2: Set oRange = ThisDocument.Range gRange. Italic = True gRange.InsertAfter "insert" Данный кусок кода накладывает на весь текст документа курсив и вставляет слово “insert” после него. 83. Запишите метод объекта Range и все его параметры, который вставляет указанный текст перед заданным диапазоном. Приведите 2 примера и в каждом укажите, что конкретно сделает метод. Синтаксис: InsertBefore "нужный текст" – вставляет текст перед выделенным текстом/символом. Пример 1: Set gRange = ThisDocument.Range(8, 9) gRange.Italic = True gRange.InsertBefore"insert" Данный кусок кода вставляет слово “insert” перед девятым символом в документе, затем делает курсивным 9-й символ и вставленное слово “insert” Пример 2: Set oRange = ThisDocument.Range gRange. Bold = True gRange.InsertBefore "insert" Данный кусок кода вставляет слово “insert” перед текстом, затем делает весь текст документа жирным. Запишите метод объекта Range и все его параметры, который сворачивает диапазон или выделенный фрагмен в начальную или конечную позицию. Приведите 2 примера и в каждом укажите, что конкретно сделает метод. Ответ: Объект Range позволяет задать произвольный диапазон, представляющий собой последовательность индексированных элементов и может быть получен через метод Range или свойство Range других объектов. Свойствами объекта Range являются: Start - начальная символьная позиция диапазона. End - конечная символьная позиция диапазона. Text - позволяет получить или изменить содержимое объекта. Метод Collapse - сворачивает диапазон или выделенный фрагмент в начальную или конечную позицию. После сворачивания диапазона или выделенного фрагмента начальная и конечная точки равны. Его параметр – Direction. Синтаксис выражение. Collapse( _Direction_ ) выражение (обязательно). Переменная, представляющая объект Range.
Примечания Если вы используете вдколлапсинд (wdCollapseEnd) для сворачивания диапазона, ссылающегося на весь абзац, диапазон располагается после последнего знака абзаца (начало следующего абзаца). Однако можно переместить диапазон обратно на один символ, используя метод MoveEnd после сворачивания диапазона, как показано в следующем примере. Set myRange = ActiveDocument.Paragraphs(1).Range myRange.Collapse Direction:=wdCollapseEnd myRange.MoveEnd Unit:=wdCharacter, Count:=-1 Пример 1 В этом примере показано, как задать именованному myrange равным содержимому активного документа, свернуть именованному myrange, а затем вставляет таблицу 2x2 в начале документа. ' приведу пример процедуры, которая вставляет таблицу 2 на 2 в начало документа Public Sub A1() Set myRange = ActiveDocument.Content myRange.Collapse Direction:=wdCollapseStart ActiveDocument.Tables.Add Range:=myRange, NumRows:=2, NumColumns:=2 End Sub Пример 2 В этом примере показано, как задать именованному myrange равным содержимому активного документа, свернуть именованному myrange, а затем вставляет таблицу 10x15 в конце документа. ' приведу пример процедуры, которая вставляет таблицу 10 на 15 в конец документа Public Sub A2() Set myRange = ActiveDocument.Content myRange.Collapse Direction:=wdCollapseEnd ActiveDocument.Tables.Add Range:=myRange, NumRows:=10, NumColumns:=15 End Sub Запишите метод объекта Range и все его параметры, который вставляет страницу, столбец или разрыв раздела. Приведите 2 примера и в каждом укажите, что конкретно сделает метод. Ответ: Объект Range позволяет задать произвольный диапазон, представляющий собой последовательность индексированных элементов и может быть получен через метод Range или свойство Range других объектов. Свойствами объекта Range являются: Start - начальная символьная позиция диапазона. End - конечная символьная позиция диапазона. Text - позволяет получить или изменить содержимое объекта. Метод InsertBreak - вставляет страницу, столбец или разрыв раздела. Его параметр – Type. Синтаксис выражение. InsertBreak( _Type_ ) выражение (обязательно). Переменная, представляющая объект Range.
Примечания При вставке страницы или разрыва столбца диапазон заменяется на разрыв. Если вы не хотите заменять диапазон, используйте метод сворачивания перед использованием метода InsertBreak . При вставке разрыва раздела разрыв вставляется непосредственно перед диапазоном. Некоторые из перечисленных выше констант могут быть недоступны, в зависимости от того, какой языковой параметр (например, Английский (США)) выбран или установлен. Пример 1 В этом примере вставляется разрыв страницы сразу после второго абзаца в активном документе. Public Sub A1() Set myRange = ActiveDocument.Paragraphs(2).Range With myRange .Collapse Direction:=wdCollapseEnd .InsertBreak Type:=wdPageBreak End With End Sub Пример 2 В этом примере вставляется разрыв раздела сразу после пятого абзаца в активном документе. Разрыв раздела, при котором следующий раздел начинается на следующей четной странице. Если разрыв раздела попадает на четную страницу, Word оставляет следующую нечетную страницу пустой. Public Sub A2() Set myRange = ActiveDocument.Paragraphs(5).Range With myRange .Collapse Direction:=wdCollapseEnd .InsertBreak Type:=wdSectionBreakEvenPage End With End Sub Запишите метод объекта Range и все его параметры, который задает позиции начального и конечного символов для существующего диапазона. Приведите 2 примера: выбор подстроки "хм" в диапазоне и обрезание диапазона до 100 символов. Ответ: Объект Range позволяет задать произвольный диапазон, представляющий собой последовательность индексированных элементов и может быть получен через метод Range или свойство Range других объектов. Свойствами объекта Range являются: Start - начальная символьная позиция диапазона. End - конечная символьная позиция диапазона. Text - позволяет получить или изменить содержимое объекта. Метод SetRange - задает позиции начального и конечного символов для существующего диапазона. Его параметры – Start, End. Синтаксис выражение. SetRange( _Start_ , _End_ ) выражение (обязательно). Переменная, представляющая объект Range.
Примечания Значения позиции символов начинаются с начала статьи, а первое значение — 0 (ноль). Подсчитываются все символы, включая непечатаемые символы. Скрытые символы подсчитываются даже в том случае, если они не отображаются. Метод SetRange переопределяет начальные и конечные позиции существующего объекта Range . Этот метод отличается от метода Range , который используется для создания диапазона с учетом начального и конечного положения. Пример 1 В 1 примере выбираем подстроку «хм». Для этого сначала обозначим диапазон. Диапазоном выбрали 1-3 абзацы активного документа (можно взять весь документ, но решили усложнить задачу). Затем выбор подстроки был понят как выделение данной подстроки (цветом или подчёркиванием). Как выделение подстроки решили взять выделение цветом (красным). Для поиска брали объект Range, чтобы удовлетворить условию задания. Public Sub A1() ' ищем подстроку "хм" Set myRange = ActiveDocument.Paragraphs(1).Range ' как диапазон берём 1-3 абзацы документа myRange.SetRange Start:=myRange.Start, _ End:=ActiveDocument.Paragraphs(3).Range.End Const цвет = vbRed ' выделим подстроку "хм" цветом, например, красным, он заметнее With myRange.Find ' находим подстроку в диапазоне от 1 до 3 абзацев .Text = "хм" ' находим подстроку "хм" .HitHighlight .Text, цвет ' выделяем её End With End Sub Пример 2 Во 2 примере обрезаем диапазон до 100 символов. На этот раз возьмём как диапазон весь документ (в прошлый брали 1-3 абзацы). Берём дополнительную переменную k, которая будет хранить в себе первые 100 символов документа. Если в документе более 100 символов (считаем через Len(myRange)), то в переменную k «запоминаем» эти 100 символов (через Left(myRange, 100)), затем удаляем весь диапазон (myRange.Delete). Чтобы «вернуть» 100 символов, присваиваем ранее взятому диапазону переменную k (myRange.Text = k). Public Sub A2() ' обрезание диапазона до 100 символов Set myRange = ActiveDocument.Range ' как диапазон можем взять весь активный документ myRange.SetRange Start:=myRange.Start, _ End:=ActiveDocument.Range.End Dim k ' в данную переменную "запомним" нужные символы (до 100 символов) If Len(myRange) > 100 Then ' если в активном документе более 100 символов, то начинаем его обрезать k = Left(myRange, 100) ' "запоминаем" первые 100 символов myRange.Delete ' удаляем весь диапазон myRange.Text = k ' затем "присваиваем" диапазону текст, который ранее "закинули" в переменную End If End Sub 87 Билет Запишите метод объекта Range и все его параметры, который перемещает или расширяет начальную позицию указанного диапазона или выделенного фрагмента до начала ближайшей указанной единицы текста. Приведите 2 примера и в каждом укажите, что конкретно сделает метод. Метод Range. Expand (Word) Разворачивает указанный диапазон или выделенный фрагмент. Возвращает число символов, добавленных к диапазону или выделенному фрагменту. Long. выражение. Expand( _Unit_ ) выражение (обязательно). Переменная, представляющая объект Range . Параметры
Пример Set myRange = ActiveDocument.Words(1) myRange.Expand Unit:=wdParagraph 2 пример With Selection .Characters(1).Case = wdTitleSentence .Expand Unit:=wdSentence End With 88 Билет Запишите метод объекта Application и все его параметры, который запускает макрос на языке Visual Basic. Приведите 2 примера и в каждом укажите, что конкретно сделает метод. Метод Application.InputBox ( Prompt , Title , Default , Left , Top , HelpFile , HelpContextID , Type ) Параметры
Пример В этом примере пользователю предлагается ввести имя шаблона, имя модуля, имя макроса и значение параметра, а затем запустить этот макрос. Dim strTemplate As String Dim strModule As String Dim strMacro As String Dim strParameter As String strTemplate = InputBox("Enter the template name") strModule = InputBox("Enter the module name") strMacro = InputBox("Enter the macro name") strParameter = InputBox("Enter a parameter value") Application.Run MacroName:=strTemplate & "." _ & strModule & "." & strMacro, _ varg1:=strParameter Пример 2 Из макроса run1 запустить макрос run2 с передачей параметра Sub run1() Application.Run "run2", 123 End Sub 89 Билет Запишите метод объекта Application и все его параметры, который открывает новое окно с тем же документом, что и в указанном окне. Приведите 2 примера и в каждом укажите, что конкретно сделает метод. Метод Application. Открывает новое окно с тем же документом, что и в указанном окне. Возвращает объект Window . Пример В этом примере заносится сообщение с указанием количества окон, которые существовали до и после открытия нового окна для document1. MsgBox Windows.Count & " windows open" Windows("Document1").NewWindow MsgBox Windows.Count & " windows open" Пример 2 В этом примере открывается новое окно, размещается все открытые окна, закрывается новое окно, после чего отменяется расположение открытых окон. Set myWindow = NewWindow Windows.Arrange ArrangeStyle:=wdTiled myWindow.Close Windows.Arrange ArrangeStyle:=wdTiled 90. Запишите метод объекта Range и все его параметры, который расширяет диапазон, чтобы включить всю статью (весь вставляемый текст). Приведите 2 примера и в каждом укажите, что конкретно сделает метод. Ответ: |