Главная страница
Навигация по странице:

  • Private

  • 3) Опишите модификатор Static. Для чего он, с какими элементами языка VBA. Приведите 3 примера и в каждом укажите, что означает в примере использование Static.

  • Sub

  • Private Sub

  • 5. Запишите в общем виде форму вызова процедуры (или функции), в которой аргумент передается по ссылке. Приведите 3 примера и в каждом укажите, в каких частях программы будет доступно переданное

  • Sub

  • 6. Запишите в общем виде форму вызова процедуры (или функции), которая позволяет производить инициализацию динамического массива и изменение его размеров. Приведите 2 примера.

  • Ответы на вопросы по VBA. 1 Опишите модификатор Public. Для чего он, с какими элементами языка vba. Приведите 3 примера и в каждом укажите, что означает в примере использование Public


    Скачать 245.69 Kb.
    Название1 Опишите модификатор Public. Для чего он, с какими элементами языка vba. Приведите 3 примера и в каждом укажите, что означает в примере использование Public
    АнкорОтветы на вопросы по VBA
    Дата28.01.2021
    Размер245.69 Kb.
    Формат файлаdocx
    Имя файлаPROGAAAAAAA_2 (2).docx
    ТипДокументы
    #172271
    страница1 из 7
      1   2   3   4   5   6   7

    1) Опишите модификатор Public. Для чего он, с какими элементами языка VBA. Приведите 3 примера и в каждом укажите, что означает в примере использование Public.

    Ключевое слово Public в операторе объявления указывает, что доступ к элементу можно получить из кода в любом месте того же проекта, из других проектов, которые ссылаются на проект, и из любой сборки, построенной из проекта. В следующем коде показан пример объявления Public :

    Public Class ClassForEverybody

    Public можно использовать только на уровне модуля, интерфейса или пространства имен. Это означает, что можно объявить открытый элемент на уровне исходного файла или пространства имен либо внутри интерфейса, модуля, класса или структуры, но не в процедуре.

    Оператор Public используется для объявления типа данных переменной. Например, следующий оператор объявляет переменную типа Integer:

    Public NumberOfEmployees As Integer

    Кроме того, с помощью оператора Public можно объявлять тип объекта переменной. Следующий оператор объявляет переменную для нового экземпляра листа.

    Public X As New Worksheet

    В этом примере оператор Public используется на уровне модуля (раздел General) стандартного модуля для явного объявления общих переменных, которые доступны всем процедурам во всех модулях и приложениях, для которых не действует параметр Option Private Module.

    Public Number As Integer ' Общедоступная целочисленная переменная

    Public NameArray(1 To 5) As String ' Переменная открытого массива

    ' Несколько объявлений, два варианта и одно целое число, все общедоступное

    Public MyVar, YourVar, ThisVar As Integer

    2) Опишите модификатор Private. Для чего он, с какими элементами языка VBA. Приведите 3 примера и в каждом укажите, что означает в примере использование Private.

    Оператор Private используется для объявления частных переменных на уровне модуля.

    Private MyName As String

    Частные переменные доступны только в том модуле, где они объявлены.

    Используйте оператор Private для объявления типа данных переменной. Например, следующий оператор объявляет переменную типа Integer.

    Private NumberOfEmployees As Integer

    Оператор Private можно использовать для объявления типа объекта переменной. Следующий оператор объявляет переменную для нового экземпляра листа.

    Private X As New Worksheet

    В этом примере показано использование оператора Private на уровне модуля для объявления переменных частными, то есть доступными только в модуле, в котором они объявлены.

    Private Number As Integer ' Частная целочисленная переменная

    Private NameArray(1 To 5) As String ' Переменная частного массива.

    ' Несколько объявлений, два варианта и одно целое число, все частные

    Private MyVar, YourVar, ThisVar As Integer
    3) Опишите модификатор Static. Для чего он, с какими элементами языка VBA. Приведите 3 примера и в каждом укажите, что означает в примере использование Static.
    Если для объявления переменной в процедуре используется оператор Static вместо оператора Dim, объявленная переменная сохраняет свое значение между вызовами в этой процедуре.

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

    Static EmployeeNumber(200) As Integer
    Следующий оператор объявляет переменную для нового экземпляра листа.

    Static X As New Worksheet

    В этом примере оператор Static используется для сохранения значения переменной до тех пор, пока выполняется код модуля.

    ' Определение функции

    Function KeepTotal(Number)

    ' Только переменная Accumulate сохраняет свое значение между вызовами

    Static Accumulate

    Accumulate = Accumulate + Number

    KeepTotal = Accumulate

    End Function




    ' Определение статической функции

    Static Function MyFunction(Arg1, Arg2, Arg3)

    ' Все локальные переменные сохраняют значение между вызовами функций

    Accumulate = Arg1 + Arg2 + Arg3

    Half = Accumulate / 2

    MyFunction = Half

    End Function
    Простой пример статистической переменной

    Sub tt()

        Static t As Long

        MsgBox t

        t = t + 1

    End Sub

    4. Запишите в общем виде форму вызова процедуры, которая передает аргумент по значению. Приведите 3 примера и в каждом укажите, в каких частях программы будет доступно переданное значение.

    ByVal — Передача параметра по значению

    При передаче делается копия элемента. Все изменения, которые будут проводится над параметром, будут затрагивать только его.


    Sub/Function макрос/функция(ByVal значение As тип)

    Sub macro_test()  

        Dim var_number As Integer

    var_number = 30  

    'Начальное значение переменной "var_number" есть 30  

    calcul_square var_number  

    'Под-процедура запускается с "var_number" как аргумент  

    Private Sub calcul_square (ByVal var_value As Integer)  

    'Переменная "var_value" копирует значение переменной "var_number" (2-е переменные не являются связанными)  

    var_value = var_value * var_value  

    'Значение переменной "var_value" изменено   

    End Sub  

    'Конец под-процедуры (в этом примере под-процедура не имеет никакого влияния ни на что)   

    MsgBox var_number  

    'Переменная "var_number" не была изменена, и поэтому 30 будет отображено в диалоговом окне 

    Пример 2:

    Public Sub Test()

    Dim foo As Long

    foo = 42

    DoSomething foo

    ‘Происходит передача foo без изменения в основом макросе

    Debug.Print foo

    End Sub
    Private Sub DoSomething(ByVal foo As Long)

    foo = foo * 2

    MsgBox(foo)

    ‘foo будет равно 84, только внутри этого макроса

    End Sub

    Пример 3:

    Public Sub Chislo()

    Dim Poof As Integer

    Poof = 98

    Poschitaem Poof

    ‘Происходит передача Poof без изменения в основом макросе

    Debug.Print Poof

    End Sub
    Private Sub Poschitaem(ByVal Poof As Integer)

    Poof = CStr(Poof)

    Poof = Poof + Poof

    MsgBox(Poof)

    ‘Poof будет равно 9898, только внутри этого макроса

    End Sub

    5. Запишите в общем виде форму вызова процедуры (или функции), в которой аргумент передается по ссылке. Приведите 3 примера и в каждом укажите, в каких частях программы будет доступно переданное значение. Хотя бы в одном примере обязательно должно быть указано ключевое слово.

    ByRef — Передача параметра по ссылке

    В данном случае передача параметра происходит по ссылке. Любые изменения будут отражены на исходном элементе.

    Так же стоит знать, что ByRef используется по умолчанию при передаче параметров.

    Sub/Function макрос/функция(ByRef значение As тип)

    Sub macro_test()  

        Dim var_number As Integer

    var_number = 30  

    'Начальное значение переменной "var_number" є 30  

    calcul_square var_number  

    'Под-процедура запускается с "var_number" как аргумент  

    Private Sub calcul_square(ByRef var_value As Integer)  

    'Переменная "var_value" в некоторой степени служит для быстрого доступа к переменной "var_number",  

    'что означает, что если переменная "var_value" изменена, переменная "var_number" будет также изменена  

    "(и они не должны обязательно иметь одинаковое имя)  

    var_value = var_value * var_value  

    'Значение переменной "var_value" изменено (и поэтому "var_number" также одновременно изменено)   End Sub  

    'Конец под-процедуры  

    MsgBox var_number  

    'Переменная "var_number" была изменена, поэтому 900 будет сейчас отображено в диалоговом окне  

    Пример 2:

    Public Sub Test()

    Dim foo As Long

    foo = 42

    DoSomething foo

    ‘Происходит передача и изменение foo, foo станет равно 84

    Debug.Print foo

    End Sub
    Private Sub DoSomething(ByRef foo As Long)

    foo = foo * 2

    End Sub

    Пример 3:

    Public Sub Chislo()

    Dim Poof As Integer

    Poof = 98

    Poschitaem Poof

    ‘Происходит передача и изменение Poof станет равно 9898 и изменит тип на Stirng

    Msgbox (Poof)

    End Sub

    Private Sub Poschitaem(ByRef Poof As Integer)

    Poof = CStr(Poof)

    Poof = Poof + Poof

    MsgBox(Poof)

    ‘Poof будет равно 9898

    End Sub

    6. Запишите в общем виде форму вызова процедуры (или функции), которая позволяет производить инициализацию динамического массива и изменение его размеров. Приведите 2 примера.

    Dim AnyName() As AnyType

    AnyName- допустимое название массива, AnyType- тип массива

    Объявив динамический массив, вы сможете менять его размер во время выполнения кода. Используйте операторы Static, Dim, Private или Public, чтобы объявить массив, не указывая значение в скобках, как показано в следующем примере:

    Dim sngArray() As Single

    Вы можете просто изменить размер массива с помощью ReDim , это изменит размер массива, но если вы сохраните информацию, уже сохраненную в массиве, вам понадобится часть Preserve .

    Dim Dynamic_array As Variant

    ' first we set Dynamic_array as variant
    For n = 1 To 100
    If IsEmpty(Dynamic_array) Then

    'isempty() will check if we need to add the first value to the array or subsequent ones



    ReDim Dynamic_array(0)

    'ReDim Dynamic_array(0) will resize the array to one variable only

    Dynamic_array(0) = n
    Else

    ReDim Preserve Dynamic_array(0 To UBound(Dynamic_array) + 1)

    'in the line above we resize the array from variable 0 to the UBound() = last variable, plus one effectivelly increeasing the size of the array by one

    Dynamic_array(UBound(Dynamic_array)) = n

    'attribute a value to the last variable of Dynamic_array

    End If
    Next

    Мы можем использовать ту же логику для уменьшения массива. В этом примере значение «последний» будет удалено из массива.

    Dim Dynamic_array As Variant

    Dynamic_array = Array("first", "middle", "last")



    ReDim Preserve Dynamic_array(0 To UBound(Dynamic_array) - 1)

    ' Из массива будет отброшено “last”
      1   2   3   4   5   6   7


    написать администратору сайта