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

  • Добавление контрольного значения. Контролируемые выражения можно использовать также для назначения точек останова. В диалоговом окне Добавление контрольного значения

  • 8. Лабораторные работы

  • Создание интерфейса пользователя.

  • Свойства . Разместить на листе Excel элементы управления

  • Разработка событийных процедур. Рассмотрим несколько процедур: Сложение

  • VBA2. Разветвления Вычислить значения функций в области определения х

  • VBA3. Переменные, процедуры, функции, циклы, массивы

  • VBA4. Сортировка чисел в столбце по возрастанию или убыванию

  • VBA5. Сортировка чисел в столбце по возрастанию или убыванию с созданием формы

  • VBA6. Создание приложения для вычисления многочленов.

  • VBA7. Сортировка чисел в столбце по возрастанию или убыванию с созданием формы и панели инструментов с кнопкой

  • 9. Самостоятельные и контрольные задания

  • VBA-методичка. Практикум по информатике для студентов очной формы обучения Часть ii. Visual Basic for Applications


    Скачать 0.95 Mb.
    НазваниеПрактикум по информатике для студентов очной формы обучения Часть ii. Visual Basic for Applications
    Дата16.03.2021
    Размер0.95 Mb.
    Формат файлаdoc
    Имя файлаVBA-методичка.doc
    ТипПрактикум
    #185064
    страница3 из 8
    1   2   3   4   5   6   7   8
    Р
    ис. 4. Окно контрольного значения

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

    Контролируемые выражения можно использовать также для назначения точек останова. В диалоговом окне Добавление контрольного значения имеется возможность назначить точки останова двух типов:

    1. Точки останова, автоматически переводящие программу в режим паузы, как только выполнится оператор, изменяющий на ненулевое значение заданного выражения (в VBA 0 означает False, а любое ненулевое значение — это True). Для назначения этого типа точки останова выберите переключатель Останов, если выражение истинно.

    2. Точки останова, автоматически переводящие программу в режим паузы при изменении значения заданного выражения. Чтобы назначить точку останова этого типа нужно выбрать переключатель Останов при изменении значения.

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

    8. Лабораторные работы

    VBA1. Создание простейшего интерфейса. Калькулятор


    Описание калькулятора.

    Операнды (числа) вводятся в поля - в регистры R1, R2. Результат вычислений заносится в регистр R2. Операции имеют вид: R2 = R2 операция R1, R2=1/R2, R2=R2^2, R2=R2^3, R2=R2^(1/2). Кроме того, предусматриваются операции присваивания: R1 = 0, R2 = R1, R2 = R3, R3 = 0, R3 = R2, R3 = R3 + R2.

    Создание интерфейса пользователя.

    1. Меню Вид/Панели инструментов/Visual Basic.

    2. Кнопкой в виде молоточков вывести на экран панель, содержащую элементы управления.

    3. Перейти в режим конструктора - кнопка с изображением треугольника и карандаша.

    4. Кнопкой в виде листочка с указательным пальцем вывести окно Свойства.

    5. Разместить на листе Excel элементы управления: заголовки с именами (свойство Name) Label1, Label2, Label3 и с надписями (свойство Caption) Регистр 1, Регистр 2, Регистр 3; поля с именами (свойство Name) R1, R2, R3 и со значением свойства Value, равным нулю; кнопки с надписями (свойство Caption - см. рисунок).

    6. Написать процедуру для каждой кнопки.




    Разработка событийных процедур.

    Рассмотрим несколько процедур: Сложение – выполняется при нажатии командной кнопки с надписью + (свойство Caption), Умножение (*), Извлечение квадратного корня - командная кнопка с именем (Name) x12 и c надписью (Caption) x^(1/2).
    Private Sub Сложение_Click()

    R2.Value = Val(R1.Text) + Val(R2.Text) ' Функция Val преобразует символы в числа

    End Sub
    Private Sub Умножение_Click()

    R2.Value = R1.Value * R2.Value

    End Sub
    Private Sub x12_Click()

    If R2.Value > 0 Then ' если знаменатель больше нуля, то возможна операция деления

    ' Функция Format преобразует число в символы с тремя знаками после запятой

    ' Функция Sqr извлекает квадратный корень из числа

    R2.Text = Format(Sqr(R2.Value), "0.000")

    Else

    ' сообщение с помощью функции MsgBox, если подкоренное выражение отрицательно

    MsgBox ("R2 <= 0")

    End If

    End Sub
    Для перехода к тексту процедуры в окне редактора VBA - двойной щелчок мышью по командной кнопке в режиме конструктора.


    VBA2. Разветвления
    Вычислить значения функций вобласти определения х [-1.7,1.5].
    Y = (1+x)/(1+ )
    f = cos2(3x) - cos(x)sin(x)

     = 3.14159265 ( можно также вычислить как функцию ПИ( ) )



    , x<=0

    g =

    ( 1+x)/(1+ ), x >0




    (1+x+x2)/(1+x2), x<0

    z = , x>=0 и x<1

    2 Abs(0.5+Sin(x)), x>=1

    Для вычислений на листе Excel (см. приведенный ниже рисунок) разместить поля (TextBox) с именами TBx, TBy, TBf, TBg, TBz. Рядом с полями поместить надписи x, y, f, g, z. Кроме того, на лист Excel поместить кнопку CommandButton1 и написать процедуру для вычисления указанных функций. Если заданное значение x не попадает в область определения функции, то в соответствующее поле занести пробел.



    VBA3. Переменные, процедуры, функции, циклы, массивы
    Предположим, что на листе Excel в диапазоне ячеек (R1C1 : RmCn) находится таблица данных, а ячейки столбца n+1 и строки m+1, примыкающие к таблице, - пусты.

    1 2 3 - номера столбцов: j=1,…..,n


    Требуется разместить на листе Excel командную кнопку с заголовком Вычислить, а в модуль, соответствующий листу Excel, включить подпрограммы-функции Mrow и Ncol для определения m и n, процедуру TabA для копирования таблицы с листа Excel в двумерный массив A, а также событийную процедуру, которая должна включать в себя:

    1. резервирование переменных i, j, m, n типа Integer,

    2. резервирование переменной S типа Single,

    3. резервирование массива A без указания его размерности, т.е. Dim A( ) As Single,

    4. определение m и n путем использования функций Mrow и Ncol,

    5. переопределение размерности массива A, т.е. ReDim A (1 To m, 1 To n),

    6. копирование таблицы в массив A с помощью процедуры TabA,

    7. вычисление и размещение в строке, имеющей номер m+2, сумм по столбцам.

    Рекомендации.

    Для определения m и n в функциях Mrow и Ncol применить циклы типа Do-Loop:

    Function Mrow() As Integer

    Dim i As Integer

    i = 1

    Do Until IsEmpty (Cells(i, 1))

    i = i + 1

    Loop

    Mrow = i - 1

    End Function

    Процедура TabA должна иметь следующий заголовок:

    Sub TabA(m As Integer, n As Integer, A( ) as Single)

    Для копирования таблицы в массив A использовать двойной цикл типа For-Next:

    For i=1 To m

    For j=1 To n

    A(i,j)=Cells(i,j).Value

    Next j

    Next i

    Для вычисления сумм столбцов в событийной процедуре также использовать двойной цикл, полагая, что исходные данные находятся в массиве A. Здесь внешний цикл - по j. Он включает в себя начальное присваивание S=0, цикл по i, в котором наращивается значение S, и, наконец, присваивание j-го результата: Cells(i,j).Value = S

    VBA4. Сортировка чисел в столбце по возрастанию или убыванию



    1. На листе Excel для создания интерфейса пользователя разместите элементы управления: надпись Номер столбца; поле TextBox1 и счетчик SpinButton1 для указания номера столбца; переключатели Option1, Option2 с надписями По возрастанию, По убыванию и кнопку с надписью Сортировать - см. рисунок.



    2. Для поля TextBox1 и для счетчика SpinButton1 установите свойство Value=1. Кроме того, для счетчика установите значения свойств Min=1 и Max=20. Для счетчика создайте событийную процедуру SpinButton1_Change() - при изменении пользователем значения счетчика она должна изменять значение TextBox1.Value, делая его равным значению счетчика. Точно так же для поля TextBox1 создайте событийную процедуру TextBox1_Change() – она должна изменять значение (свойство Value) счетчика, как только пользователь изменит значение, хранимое в текстовом поле.

    1. Создайте событийную процедуру, соответствующую командной кнопке. Эта процедура должна определить номер j столбца, подлежащего сортировке, количество чисел m в этом столбце и выполнить сортировку методом пузырька. В процедуре зарезервируйте целые переменные i, j, m, переменную F типа Variant и переменные Flag и R типа Boolean. Процедура сортировки методом пузырька может включать следующие блоки:

    1. Flag=False (признак того, что еще не было перестановок чисел в столбце j); i=2;

    2. R = Cells(i-1,j).Value - Cells(i,j).Value (R=True, если значение в ячейке i-1 больше, чем в i);

    3. если надо сортировать по возрастанию, то R = Cells(i,j).Value - Cells(i-1,j).Value;

    4. если R=True, то исполняется блок 5;

    5. F = Cells(i-1,j).Value; Cells(i-1,j).Value = Cells(i,j).Value; Cells(i,j).Value = F ; Flag=True; (перестановка чисел, регистрация этого факта путем присваивания Flag=True)

    6. i=i+1; если i <= m , то передача управления блоку 2 - для сравнения следующей пары чисел;

    7. Если Flag =True, то передача управления блоку 1, иначе конец, т.к. перестановок не было.


    VBA5. Сортировка чисел в столбце по возрастанию или убыванию с созданием формы
    Поместить на лист Excel кнопку CommandButton1 с тем же заголовком Сортировать, а остальные элементы управления и дополнительно кнопку Ok поместим на диалоговую форму с именем Dialog1 и заголовком Параметры сортировки. Для создания этой формы надо переключиться в окно Visual Basic и с помощью кнопки на панели инструментов или через пункт меню Вставка/UserForm создать пустую форму. Она появится в окне Visual Basic. При щелчке мышью по форме появляется также окно Панель элементов, содержащее палитру элементов управления. Теперь остается с помощью кнопки на панели инструментов раскрыть в окне Visual Basic еще окно свойств, установить свойства формы и разместить на ней требуемые нам элементы управления точно так же, как это было сделано на листе Excel (см. рисунок). Такой подход почти освободит лист Excel от элементов управления, но потребует дополнительных усилий при разработке приложения.

    Во-первых, теперь в начало событийной процедуры CommandButton1_Click надо вставить команду для показа формы: Dialog1.Show. В этой инструкции записывается имя объекта (имя, присвоенное нами форме) и, через точку, имя метода – показать. Следовательно, как только пользователь нажмет командную кнопку на листе Excel, поверх этого листа появится диалоговое окно. В нем пользователь выберет параметры сортировки и нажмет кнопку Ok (см. второй рисунок, поясняющий эту работу).

    Во-вторых, надо написать событийную процедуру для кнопки Ok. Эта процедура должна содержать команду Dialog1.Hide - скрыть форму Dialog1.

    В-третьих, в процедурах, принадлежащих листу Excel, а не форме Dialog1, изменится обращение к свойствам элементов управления. Так, теперь надо писать не TextBox1.Value, а Dialog1.TextBox1.Value – так указывается свойство Value (значение) объекта TextBox1 (редактируемое поле), принадлежащего форме Dialog1.








    VBA6. Создание приложения для вычисления многочленов.
    В
    ычислить многочлен пятой степени

    и спользуя для вычислений экономичный алгоритм Герона:



    1. На свободном рабочем листе создать командную кнопку с надписью Вычисление многочлена. В программный код кнопки вписать инструкцию UserForm1.Show.

    2. Для добавления к проекту новой формы в окне редактора Visual Basic выполнить команду Вставка/UserForm.

    3. Добавить необходимые элементы управления, используя панель элементов (см.рис.).




    1. Оставаясь в редакторе Visual Basic, двойным щелчком левой кнопки мыши по форме вызвать ее программный код и перейти к разработке модуля.

    Сначала опишите массив А, отведенный под коэффициенты многочлена, переменные x и S, не забывая о комментариях.

    Dim A(5) ‘ массив для коэффициентов многочлена

    Dim x ‘ переменная для значения аргумента

    Dim S ‘ переменная для вычисленного значения многочлена.
    Затем надо написать процедуры, назначенные полям ввода коэффициентов и аргумента. Следующий пример приведен для А(0):

    Private Sub TextBox1_Change() ' ввод коэффициента a0

    A(0) = TextBox1.Value

    Next_Button.Enabled = True ‘ эта инструкция активизирует кнопку «Вычислить»

    End Sub

    Необходимо также написать событийную процедуру для кнопки Выход:
    Private Sub Cancel_button_Click() ' кнопка "Выход"

    Unload Me ‘по русски: «выгрузи меня»

    End Sub

    Кнопке Вычислить, имеющей имя Next_Button_Click( ), назначим следующую процедуру:

    Private Sub Next_Button_Click() ' вычисление по схеме Горнера

    S = A(0)

    For I = 0 To 4 ' цикл For ... Next

    S = S * x + A(I + 1)

    Next I

    TextBox8.Value = Str(S) ‘ функция Str присваивает переменной S строковый тип

    End Sub
    Предложенная форма может быть использована и при вычислении многочленов степени меньше пятой, если в соответствующие поля вводить нулевые значения коэффициентов. Возвратившись в Excel и щелкнув по командной кнопке Вычисление многочлена, протестируем созданную форму, вычисляя следующие многочлены:

    1
    )

    2)

    3)

    Тестирование можно проводить и оставаясь в редакторе VBA (см. раздел 7 «Отладка приложений»).
    VBA7. Сортировка чисел в столбце по возрастанию или убыванию с созданием формы и панели инструментов с кнопкой
    В предыдущих работах, посвященных созданию формы, запуск программы выполнялся с помощью кнопки размещенной на листе Excel. Целью этой работы является создание панели инструментов с кнопкой для выполнения программы.

    1. Создайте панель инструментов и разместите на ней кнопку. Панель инструментов должна появляться при открытии рабочей книги. В окне редактора Visual Basic выберите лист ThisWorkBook и включите в него следующие две процедуры:

    1) Процедура создания новой панели инструментов при открытии рабочей книги

    Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)

    'Создание новой панели инструментов

    With Application.CommandBars.Add(Name:="Моя панель инструментов", _

    Position:=msoBarTop, MenuBar:=False, Temporary:=True)

    .Visible = True

    With .Controls

    'Создание кнопки с надписью

    With .Add(Type:=msoControlButton, Id:=1) 'добавить кнопку на панель инструментов

    .Caption = "Сортировка" 'надпись на кнопке

    .TooltipText = "Сортировка" 'всплывающая подсказка

    .Style = msoButtonCaption

    .OnAction = "Sort" 'при нажатии на кнопку выполняется процедура

    End With

    End With

    End With

    End Sub
    2) Процедура, удаления созданной панели инструментов при закрытии приложения

    Private Sub Workbook_WindowDeactivate(ByVal Wn As Excel.Window)

    With Application

    .CommandBars("Моя панель инструментов").Delete

    End With

    End Sub

    В результате будет создана панель инструментов с кнопкой Сортировка (см. Рис).

    2. Добавьте модуль через пункт меню Вставка/Модуль и введите процедуру Sort для отображения формы на экране.

    Sub Sort()

    UserForm1.Show

    End Sub

    3. В окне редактора создайте форму, разместите на ней требуемые элементы управления и установите свойства (см. Рис. на следующей стр.).

    4. Напишите процедуры, связанные с формой, а также процедуру UserForm_Initialize (задание значений по умолчанию).

    Private Sub UserForm_Initialize() ' Процедура инициализации формы

    OB1.Value = True

    OptionButton1.Value = True

    SB1.Min = 1

    SB1.Max = 100

    TB1.Value = SB1.Value

    SB2.Min = 1

    SB2.Max = 100

    TB2.Value = SB2.Value

    E
    nd Sub
    5. Напишите процедуры сортировки. Сортировка выбором заключается в том, что требуется найти элемент массива, имеющий наименьшее значение и переставить его с первым элементом, затем проделать то же самое, начав со второго элемента.

    9. Самостоятельные и контрольные задания
    Задание 1

    1. Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так.

    2. П
      усть x1=y1=1; xi=0.3xi-1; yi=xi-1+yi-1, i=2,3,… Дано натуральное n. Найти

    3. Даны целые числа а1, а2, а3. Получить целочисленную матрицу [bij] i, j=1,2,3, для которой bij=ai-3aj.


    Задание 2

    1. Даны 3 действительных числа a, b, c (a0). Полностью исследовать квадратное уравнение ax2+bx+c=0, т.е. если действительных корней нет, то должно быть выведено сообщение об этом, иначе должны быть найдены и помещены в текстовые поля 2 корня.

    2. Пусть a0=1; ak=kak-1+1/k; k=2,3,… Дано натуральное n. Получить an.

    3. Дана действительная матрица размера m x n. Определить числа b1,b2,…,bm, равные соответственно:

    а) суммам элементов строк;

    б) произведением элементов строк;

    в) наименьшим значениям элементов строк;

    г) значениям средних арифметических элементов строк;

    д) разностям наибольших и наименьших значений элементов строк.
    Задание 3

    1. Даны действительных числа x, y. Вычислить z:

    x-y, если x>y

    z =

    y-x+1 в противном случае.

    2. Пусть v1=v2=0; v3=1.5;




    i = 4,5,…. Дано натуральное n (n4). Получить vn.


    1. Дана действительная квадратная матрица порядка 10. В строках с отрицательным элементом на главной диагонали найти:

    а) сумму всех элементов;

    б) наибольший из всех элементов.
    Задание 4

    Последовательность чисел Фибоначчи u0, u1, … образуется по закону u0=0; u1=1; ui=ui-1+ui-2 (i=2,3,….)

    а) Дано натуральное число n>1. Получить u0, u1, …, un.

    б) Последовательность f0, f1, … образуется по закону f0=0; f1=1;

    fi=fi-1+fi-2+ui-2 (i=2, 3, …). Дано натуральное число n>1. Получить f0, f1, …, fn.
    Дано действительное число x. Вычислить с точностью =10-6:



    Указать количество учтенных слагаемых.

    Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых, и очередное слагаемое оказалось по модулю меньше, чем . Это и все последующие слагаемые можно уже не учитывать.
    Задание 5

    1. «Тестирование коллектива». Пусть целочисленная матрица размера nxm содержит информацию об учениках некоторого класса из n человек: j-я строка содержит информацию о i-м ученике. В первом столбце проставлен возраст в годах, во втором – рост в см, в третьем – успеваемость (округленный средний балл) и т. д. Ученик называется среднестатистическим по k-му параметру (уникальным по k-му параметру), если на нем достигается минимум (максимум) модуля разности среднего арифметического чисел из k-го столбца и значения k-го параметра этого ученика. По матрице указанного вида определить номера учеников:

    а) самых уникальных,

    б) самых средних.

    1. Элемент матрицы называется седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце. Дана действительная матрица размера 5x 6. Выяснить, имеются ли седловые точки в этой матрице, и если они имеются, то указать индексы одной из них.

    Задание 6

    Найти количество различных чисел в произвольном одномерном массиве чисел, который предварительно разместить на рабочем листе книги Excel.

    Создать диалоговое окно (UserForm), содержащее командную кнопку, а в событийной процедуре, соответствующей нажатию кнопки, определить это количество. Полученное значение вывести в поле с надписью Количество различных чисел.

    Задание 7

    Найти количество совпадающих чисел в произвольном одномерном массиве чисел, который предварительно разместить на рабочем листе книги Excel.

    Создать диалоговое окно (UserForm), содержащее командную кнопку, а в событийной процедуре, соответствующей нажатию кнопки, определить это количество. Полученное значение вывести в поле с надписью Количество совпадающих чисел.
    Задание 8

    Найти наибольшее число в произвольном одномерном массиве чисел, который предварительно разместить на рабочем листе книги Excel.

    Создать диалоговое окно (UserForm), содержащее командную кнопку, а в событийной процедуре, соответствующей нажатию кнопки, определить наибольшее число массива. Полученное значение вывести в поле с надписью Наибольшее число.

    Курсовые работы
    Общие требования и рекомендации
    Курсовая работа должна включать в себя текст на Word и программу на VBA в книге Excel.

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

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

    1. 1   2   3   4   5   6   7   8


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