Задача 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