ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.05.2021

Просмотров: 599

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Задача 1.

Написать процедуру с именем Proc1, выполняющую следующие действия:

  1. Присвоить переменной Num1 случайное значение от 1 до 9.

  2. С помощью оператора IfThenElse проверить выполнение условия Num1 = 7. Если результат проверки равен 7, с помощью функции MsgBox выдать сообщение о выигрыше. В противном случае – о проигрыше.Sub Proc1()
    Dim Num1 as integer
    Num1=Int ((9*Rnd)+ 1)
    If Num1=7 then MsgBox “
    Поздравляем! Победа!”
    Else
    MsgBox “ИЗВИНИТЕ, вы проиграли”
    End If
    End Sub

Задача 2.

Написать процедуру с именем Proc2, выполняющую следующие действия:

  1. Присвоить переменной Num1 случайное значение от 1 до 9. Для генерации случайного значения использовать процедуру – функцию с именем Function GetRandomNumber().

  2. С помощью оператора IfThenElse проверить выполнение условия Num1 = 7. Если результат проверки равен 7, с помощью функции MsgBox выдать сообщение о выигрыше. В противном случае – о проигрыше.Sub Proc2()
    Dim Num1 as integer
    Num1=GetRandomNumber
    If Num1=7 then MsgBox “
    Поздравляем! Победа!”
    Else
    MsgBox “
    ИЗВИНИТЕ, вы проиграли
    End If
    End Sub
    Function GetRandomNumber()
    GetRandomNumber = Int ((9*Rnd)+ 1)
    End Function

Задача 2(старая)

В3=Larger(10.13) на рабочем листе Exel

Function Larger (Number1 As Integer, Number2 As Integer) As Integer

If Number1 > Number2 Then

Larger = Number1

Else

Larger = Number2

End If

End Function

Задача3

Написать процедуру с именем Proc3, выполняющую следующие действия:

  1. С помощью диалогового окна ввода ввести пароль и присвоить значение введенного пароля переменной PassWord.

  2. Если значение введенного пароля равно «Отлично», то с помощью управляющей структуры For Each Sheet In Active WorkBook.Sheets……Next Sheet каждому листу активной рабочей книги задать выполнение следующих действий:

    1. Выбрать лист

    2. Снять защиту с листа

    3. Свойству Visible присвоить значение True.

Если пароль введен неверно, то выдать соответствующее сообщение.
Sub Proc3()
Dim PassWord as String
PassWord = InputBox (“
Введите пароль:”)
If PassWord = “
Отлично” then
For Each Sheet in ActiveWorkBook.WorkSheets
WorkSheet.Select
WorkSheet.Unprotect
WorkSheet.Visible = True
Next
Else
MsgBox “
Пароль неверен
End If
End Sub

Задача3(старая)

Private Sub CallingSub()

Dim FirstName As Integer, SecondName As Integer

FirstName = 10

SecondName = 13

A = Larger (FirstName, SecondName)

MsgBox «Большее из двух значений = » & Larger

End Sub

Function Larger (Number1 As Integer, Number2 As Integer) As Integer

If Number1 > Number2 Then

Larger = Number1

Else

Larger = Number2

End If

End Function

Задача4.

Написать процедуру Proc4, вычисляющую факториал числа по следующему алгоритму:

  1. Ввести число для вычисления его факториала с помощью функции InputBox и присвоить его значение переменной NumberString.

  2. Преобразовать введенное значение в число с помщью функции Val() и присвоить это число переменной Num.

  3. Проверить условие Num>=0. Если да, то выполнить вычисление факториала с помощью цикла ForNext, писвоив переменной Factorial полученное значение. Вывести полученный результат в ячейку А5 активной рабочей книги на Лист1.

  4. Если Num<0, То выдать соответсвующее сообщение.
    Sub Proc4()
    Dim NumberString as string
    Dim Num as integer, I as integer
    Dim Factorial as Double
    NumberString = InputBox(“
    Введите число:”)
    Num = Val(NumberString)
    If Num>=0 then
    Factorial =1
    For i=1 to Num
    Factorial = Factorial*i
    Next i
    ActiveWorkBook.WorkSheets(1).Select
    Range (“A5”)=Factorial
    Else
    MsgBox “
    Факториал отрицательного числа не существует
    End If
    End Sub


Задача5.

Написать процедуру Proc5 с использованием управляющей структуры Select Case, выполняющую следующие действия:

  1. С помощью диалогового окна ввода ввести пароль и присвоить значение введенного пароля переменной PassWord.

  2. Используя стуктуру Select Case и переменную PassWord в зависимости от значения введенного пароля, описать выполнеиние следующих действий с листами активной рабочей книги:

    1. Если PassWord= «Отлично», то с рабочего листа с именем «Продажи» снять защиту и с помощью свойства Visible отменить скрытие этого рабочего листа.

    2. Если PassWord= «Хорошо», то снять защиту со 2го рабочего листа.

    3. Если пароль введен неверно, то выдать соответствующее сообщение с помощью функции MsgBox.
      Sub Proc5()
      Dim PassWord as String
      PassWord = InputBox (“Введите пароль:”)
      Select Case PassWord
      Case “Отлично”
      WorkSheet(“Продажи”).Unprotect
      WorkSheet(“Продажи”).Visible = True
      Case “Хорошо”
      WorkSheet(2).Unprotect
      Case Else
      MsgBox “Неверный пароль”
      End Select
      End Sub

Задача6.

Написать процедуру Proc6 с использованием управляющей структуры For-Each- Next, выполняющую в активной рабочей книге следующие дествия:

  1. Выполнить выделение каждого рабочего листа (объект SheetVar).

  2. Снять защиту с рабочего листа.

  3. Сделать рабочий стол видимым.

  4. Вывести имя рабочего листа в окно сообщения.

Sub Proc6 ( )
Dim SheetVar As Worksheet
For Each SheetVar In ActiveWorkBook.Worksheets
SheetVar.Select
SheetVar.Unprotect
SheetVar.Visible=True
MsgBox SheetVar.
Name
Next
End Sub

Задача 7.

Написать процедуру Ргос7 с использованием управляющей структуры For- Each- Next, выполняющую с объектом Range в активной рабочей книге следующие действия:

1. Выделить рабочий Лист 1.

2. Для каждой ячейки диапазона "Al :F20" выделенного рабочего листа выполнить:

Если содержимое ячейки из этого диапазона не равно 25, то установить для нее размер шрифта 18, полужирный, цвет заливки - красный (3).

Если содержимое ячейки равно 25, то никаких действий не предпринимать.

Sub Proc7()
Dim Cell As Range
ActiveWorkBook.WorkSheet("
Лист1").Select
For Each Cell In Range("A1:F20")
If Cell.Value<>25 Then
With Cell.Font
.Size=18
.Bold=True
.ColorIndex=3
End With
End If
Next
End Sub

Задача 8

Открыть книгу Excel "Торговый дом" па рабочем листе с именем "Торговые операции". Нa рабочем листе создан список, состоящий из двух полей: названия полей "Код продукта", "Цена продукта" расположены в ячейках A3 и ВЗ соответственно. Количество записей в этом списке заранее неиз­вестно. Написать программный код процедуры выдачи на экран с помощью функции MsgBox информации о цене продукта, код которого вводится с кла­виатуры с помощью функции Input Box. Пояснения для составления проце­дуры:

- использовать два массива для размещения в них кодов продуктов и цен
на продукты соответственно;

- подсчитать общее количество продукции, затем переопределить раз­мер двух массивов;

- в цикле For эти массивы заполнить данными столбцов А и В; - запросить у пользователя ввести код продукта и присвоить введенное
значение переменной. Затем еще в одном цикле For просмотреть мас­сив кодов продукта в поиске введенного кода продукта;


- если код найден, то в переменной сохранить цену продукта по найденному коду, осуществить досрочный выход из цикла и вывести цену в окно сообщения. В противном случае вывести сообщение о ненайденном товаре;

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

Sub LookUpPriceO

Dim ProdCode() As String, UnitPriceQ As Currency, ReguestedPrice As Currency, Nproducts As

Integer, i As Integer, Found As Boolean, ReguestedCode As String

With Active Workbook. Worksheets( "Продажи" ).Range("A3")

Nproducts = Range(.Offset(1, 0), .End(xlDown)).Rows.Count

ReDim ProdCode(Nproducts)

ReDim UnitPrice(Nproducts)

For i = 1 To Nproducts

ProdCode(i) = .Offsetfi, 0)

UnitPrice(i) = .Offset(i, 1)

Next i

End With

ReguestedCode = InputВох("Введите код товара(большая буква и четыре цифры)")

Found = False

For i = 1 То Nproducts

If ProdCode(i) = ReguestedCode Then

Found = True

ReguestedPrice = UnitPrice(i)

End If

Next i

If Found Then

MsgBox "Товар с кодом " & ReguestedCode & " стоит " & Format(ReguestedPrice, "0.00р."),

vbInformation, "Товар найден"

Else

MsgBox "Товара с кодом " & ReguestedCode & " нет в списке ", vbInformation, "Товар не найден"

End If

End Sub




















Задача 9

Открыть книгу Excel "Торговый дом" на рабочем листе с именем "Подведение итогов". На рабочем листе с помощью программного кода процедуры ProdSales создать список, состоящий из трех полей: названия по­лей "Код продукта", "Количество продаж” и "Объем продаж" располо­жить в ячейках ЕЗ и F3 и G3 соответственно. Количество записей в этом списке будет определяться переменной NFound. Написать программный код процедуры формирования записей списка на рабочем листе элементами уже сформированных массивов ProdCodes(Nfound), Quantity(Nfound), Dollars (Nfound). Пояснения для составления процедуры:

- в начале программного кода выполнить описание переменной Nfound как целой, и массивов размера NFound как первых двух целых и третьего денежного;

- затем занести элементы массивов в столбцы с использованием цикла

For и управляющей структуры With - End With;

- выполнить сортировку списка по объему продаж в порядке убывания, в сортировке заголовки полей не участвуют;

- с помощью функции MsgBox вывести количество записей в списке.

Option Explicit

Option Base 1

Sub ProdSales()

Dim Nsales As Integer, ProdCodesData() As Integer, ProdCodesFound() As Integer, Quantity() As

Integer, DoIIarsData() As Single, DollarsTotal() As Single, i As Integer, j As Integer, NFound As

Integer, NewProduct As Boolean

With Active Workbook. Worksheets("Topговые операции").Range("E3")

Range(.Offset(1. 0), .Offset(0, 2).End(xIDown)).ClearContents

End With

With Active Workbook. Worksheets("Topговые операции ").Range("A3")

Nsales = Range(.Offset(1, 0), .End(xlDown)).Rows.Count

ReDim ProdCodesData(Nsales)

ReDim DollarsData(Nsales)

For i = 1 To Nsales

ProdCodesData(i) = .Offset(i, 0)

DollarsData(i) = .Offset(i, 2)

Next i

End With

NFound = 0

For i = 1 To Nsales

NewProduct=True
If NFound > 0 Then

For j = 1 To NFound

If ProdCodesData(i) = ProdCodesFound(j) Then

NewProduct = False

Quantity(j) = Quantity(j) + 1

DollarsTotal(j) = DollarsTotal(j) + DollarsData(j)

Exit For

End If

Nextj

End If

If NewProduct Then

NFound = NFound + 1

ReDim Preserve ProdCodesFound(NFound)

ReDim Preserve Quantity(NFound)

ReDim Preserve DollarsTotal(NFound)

ProdCodesFound(NF ound) = ProdCodesData(i)

Quantity(NFound) = 1

DollarsTotal(NFound) = DollarsData(i)

End If

Next i

Forj = 1 To NFound

With Range("E3")

.Offset(j, 0) = ProdCodesFound()

.Offset(j, 1) = Quantity(j)

.Offset(j, 2) = DollarsTotal()

End With

Nextj

Range("E4").Sort Key1 :=Range("G4"), Order1:=xlDescending, Header:=xlYes

MssBox "В базе данных проданных товаров найдено " & NFound & " наименований"

End Sub

Задача 11.

Написать процедуру с именем Proc11, выполняющую следующие действия:


1. В активной рабочей книге на рабочем листе с именем "Ипотека" очи- стить диапазон ячеек "А1 :В10".

2. Выделить столбец "А" и выполнить с ним следующие действия:

Установить ширину столбца = 20;

Выполнить перенос по словам (свойство Wraptext);

Выполнить заливку столбца красным цветом (3).

  1. С помощью функции MsgBox() выдать сообщение о выполненных дей­ствиях.
    Sub Proc11()
    Dim Cell as Range
    With ActiveWorkBook.WorkSheets(“
    Ипотека”).Cells.Range(“A1:B10”)
    .Clear
    End With
    ActiveWorkBook.WorkSheets.Columns(“A”).Select
    With Selection
    .Width = 20
    .WrapText = True
    . Interior
    . ColorIndex = 3
    End With
    MsgBox “Выполнено: ячейки А1-В10 очищены, ширина столбца А теперь равна 20, в этом же столбце теперь включен режим переноса по словам, а фон столбца - красный”
    End Sub

Задача 12.

Написать процедуру с именем Ргос12, выполняющую следующие действия: 1. В активной рабочей книге сделать активным рабочий лист с именем

"Регионы".

2. С первыми четырьмя столбцами этого листа выполнить следующие

действия:

Установить ширину столбцов = 15;

Выполнить перенос по словам (свойство Wraptext);

Выполнить заливку этих столбцов зеленым цветом(42).

3. С помощью функции MsgBoxO выдать сообщение о выполненных дей­ствиях.
Sub Proc12()
Dim I as Integer
ActiveWorkBook.WorkSheets(“
Регионы”).Activate
For I = 1 to 4
With ActiveWorkSheets.Column(i)
.Width = 15
.WrapText = True
. Interior. ColorIndex = 42
End With
Next I
MsgBox “
Все сделано
End Sub

Задача 13.

Написать процедуру с именем Рroc13, выполняющую следующие действия:

1. Описать переменную WS как объектную переменную (типа Рабочего листа), переменную Found как логическую.

2. С помощью управляющей структуры For Each <объектная переменная> In <коллекция> проверить наличие в активной рабочей книге листа с именем "Регион", Если лист найден, то переменной Found присвоить значение True.

3. С помощью функции MsgBox() на основе значения переменной Found выдать сообщение о наличии или отсутствии в книге листа с именем "Регион".

Sub Proc13()
Dim Ws As Object, Found As Boolean
Found=False
For Each Ws In ActiveWorkBook.Worksheets
If Ws.Name="
Регион" then Found=True
Next
If Found=True Then MsgBox "
Да,есть"
Else MsgBox "
Нет"
End If
End Sub


Задача 14

На рабочем листе Excel представлены продажи фирмы по регионам и по месяцам за 3 года. Список состоит из семи полей: Месяц, Регион1, Регион2, Регион3, Регион4, Регион5. Диапазон ячеек B2:B37 заполнен объектами продаж. Этому диапазону присвоено имя SalesRange. Написать процедуру, которая будет отслеживать продажи в каждом регионе, причем для каждого региона необходимо отобразить сообщение с количеством месяцев, когда продажи превышали определенное пользователем значение.

Примечание: сообщение по регионам выдавать с использованием функции MsgBox. Для ввода объема продаж, с которого начинать подсчет количества месяцев, в которых объем продаж превышал введенное пользователем значение, использовать функции InputBox.

Sub HighSales()

Dim I As Integer, j As Integer, NumberHigh As Integer, Sales As Currency

Sales = InputBox(“Введите объем продаж”,”окно ввода”)

For j = 1 to 5

NumberHigh = 0

For i = 1 to 36

If Range (“SalesRange”).Cells(i,j) >= Sales Then NumberHigh = NumberHigh + 1


Next i

MsgBox”В регионе”_&_j_”_объем продаж превышал заданную величину_”_&_”_в_”_&_NumberHigh _&_”_из 36 месяцев”,vbInformation,”окно информации о продажах”

Next j

End Sub

Задача 15

Написать программный код специального типа процедуры-функции. Назначение функции – возвращать значение в процедуру или на рабочий лист Excel. В данном случае функция должна возвратить в ячейку G3 рабочего листа Excel большее из двух чисел 10 и 13, переданных в нее. Аргументы функции, в которые передаются значения, обозначить через Number1, Number2. Полученное значение занести в переменную Larger. Тип аргументов и функции определить как Integer. Написать, как должно выглядеть содержимое ячейки G3 на рабочем листе Excel при обращении из этой ячейки к функции Larger.

Sub Number()

Dim Number3 As Integer, Number4 As Integer, A As Integer

Number3 = InputBox("Введите первое число", "Ввод первого числа")

Number4 = InputBox("Введите второе число", "Ввод второго числа")

A = LargerNumber(Number3, Number4)

End Sub

Public Function LargerNumber(Number1 As Integer, Number2 As Integer) As Integer

Dim Larger As Integer

If Number1 > Number2 Then

Larger = Number1

Else

Larger = Number2

End If

Range("G3").Value = Larger

LargerNumber = Larger

End Function

Задача 16

Написать программный код специального типа процедуры-функции. Назначение функции – возвращать значение в процедуру или на рабочий лист Excel. В данном случае функция Larger должна возвратить в процедуру CallingSub большее из двух чисел 10 и 13, переданных в функцию из процедуры. В процедуре CallingSub эти числа присвоены переменным FirstName, SecondName соответственно. Каждая из переменных имеет тип Integer. Полученный результат обращения к функции выдать на экран с помощью функции MsgBox. Аргументы функции, в которые передаются значения, обозначить через Number1, Number2. Полученное значение занести в переименованную Larger. Тип аргументов и функции определить как Integer.

Sub Calling()

Dim FirstName As Integer, SecondName As Integer, A As Integer

Range(“A1”).Value = 10

Range(“A2”).Value = 13

FirstName = Range(“A1”)

SecondName = Range(“A1”)

A = LargerNumber(FirstName, SecondName)

End Sub

Function LargerNumber(Number1 As Integer, Number2 As Integer) As Integer

Dim Larger As Integer

If Number1>Number2 Then

Larger = Number1

MsgBox”Большее число:”_&_Larger

Else

Larger=Number2

MsgBox”Большее число:”_&_Larger

End If

LargerNumber = Larger

End Function

Задача 17

Для установки интерфейса между приложением и пользователем создается форма, содержащая следующие элементы управления: два списка ListBox1 и ListBox2, два переключателя OptionButton 1 и OptionButton2, счетчик SpinButtonl, два флажка CheckBox1 и CheckBox2, текстовое поле TextBox1 и метка (подпись) Label1. Для определения внешнего вида формы при ее открытии от пользовательской формы требуется добиться доведения:

Список ListBox1 должен быть заполнен именами следующе­го клиентов, располо­женных на рабочем листе Excel в отдельном диапазоне с названием Customers.

Список ListBox2 должен быть заполнен с помощью функции Array значениями в диапазоне от 3 до 15 (при заполнении списка использовать

свойство списка List).Переключатель OptionButton1 - выставлен, флажок CheckBox1 - уста­новлен, а флажок CheckBox2 - сброшен. Поле ввода TextBox1 и метка Label1 должны быть очищены. Счетчику SpinButton1 с помощью свойств Min и Max присвоить нижнюю и верхнюю границы его изменения: 10 и 100 соответственно.