ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.05.2021
Просмотров: 599
Скачиваний: 4
Задача 1.
Написать процедуру с именем Proc1, выполняющую следующие действия:
-
Присвоить переменной Num1 случайное значение от 1 до 9.
-
С помощью оператора If – Then – Else проверить выполнение условия 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, выполняющую следующие действия:
-
Присвоить переменной Num1 случайное значение от 1 до 9. Для генерации случайного значения использовать процедуру – функцию с именем Function GetRandomNumber().
-
С помощью оператора If – Then – Else проверить выполнение условия 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, выполняющую следующие действия:
-
С помощью диалогового окна ввода ввести пароль и присвоить значение введенного пароля переменной PassWord.
-
Если значение введенного пароля равно «Отлично», то с помощью управляющей структуры For Each Sheet In Active WorkBook.Sheets……Next Sheet каждому листу активной рабочей книги задать выполнение следующих действий:
-
Выбрать лист
-
Снять защиту с листа
-
Свойству 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, вычисляющую факториал числа по следующему алгоритму:
-
Ввести число для вычисления его факториала с помощью функции InputBox и присвоить его значение переменной NumberString.
-
Преобразовать введенное значение в число с помщью функции Val() и присвоить это число переменной Num.
-
Проверить условие Num>=0. Если да, то выполнить вычисление факториала с помощью цикла For – Next, писвоив переменной Factorial полученное значение. Вывести полученный результат в ячейку А5 активной рабочей книги на Лист1.
-
Если 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, выполняющую следующие действия:
-
С помощью диалогового окна ввода ввести пароль и присвоить значение введенного пароля переменной PassWord.
-
Используя стуктуру Select Case и переменную PassWord в зависимости от значения введенного пароля, описать выполнеиние следующих действий с листами активной рабочей книги:
-
Если PassWord= «Отлично», то с рабочего листа с именем «Продажи» снять защиту и с помощью свойства Visible отменить скрытие этого рабочего листа.
-
Если PassWord= «Хорошо», то снять защиту со 2го рабочего листа.
-
Если пароль введен неверно, то выдать соответствующее сообщение с помощью функции 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, выполняющую в активной рабочей книге следующие дествия:
-
Выполнить выделение каждого рабочего листа (объект SheetVar).
-
Снять защиту с рабочего листа.
-
Сделать рабочий стол видимым.
-
Вывести имя рабочего листа в окно сообщения.
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).
-
С помощью функции 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 соответственно.