Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zadachiinformgotov.doc
Скачиваний:
24
Добавлен:
20.05.2015
Размер:
121.34 Кб
Скачать

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