Вы находитесь на странице: 1из 3

Задача 1 Задача 4

На рабочем листе Excel представлены продажи фирмы по Написать программный код процедуры, которая генерирует Задача 7
регионам и по месяцам за 3 года. Список состоит из семи случайные числа для элементов квадратной, симметричной Открыть книгу Excel "Коммерческие банки" на рабочем
полей: Месяц, Регион1, Регион2, Регион3, Регион4, Регион5. матрицы относительно главной диагонали. Симметричность листе с именем "Заставка". Написать программный код
Диапазон ячеек B2:B37 заполнен объектами продаж. Этому матрицы должна быть обусловлена структурой создаваемой процедуры, изменяющий внешний. вид объекта Window
диапазону присвоено имя SalesRange. Написать процедуру, процедуры GenNumber. При составлении программного кода (окно) Excel и располагающий в окне объект класса объектов
которая будет отслеживать продажи в каждом регионе, нужно учесть следующие замечания: Shapes. Пояснения для составления процедуры:
причем для каждого региона необходимо отобразить - диапазону ячеек квадратной матрицы, где будут - с использованием управляющей структуры With-End With
сообщение с количеством месяцев, когда продажи расположены случайные числа, присвоить имя Matrica; для активного окна изменить следующие свойства окна
превышали определенное пользователем значение. - в программном коде использовать совместно две функции ActiveWindow:
Примечание: сообщение по регионам выдавать с VBA: Randomize и Rnd. Совеместное использование - установить максимальный размер окна;
использованием функции MsgBox. Для ввода объема продаж, функций Int и Rnd должно генерировать целые двузначные - не отображать линии сетки;
с которого начинать подсчет количества месяцев, в которых числа от 10 до 100; - не отображать заголовки строк и столбцов;
объем продаж превышал введенное пользователем значение, - перед созданием вложенных цикловFor для заполнения - убрать название приложения в строке заголовка окна;
использовать функции InputBox. матрицы над диагональю написать оператор, - не отображать полосу вертикальной прокрутки;
присваивающий переменной Kolvo количество - не отображать полосу горизонтальной прокрутки
Sub HighSales() строк(столбцов) диапазона matrica; - не отображать ярлычки рабочих листов;
Dim I As Integer, j As Integer, NumberHigh As Integer, Sales As - второй набор вложенных циклов For создает зеркальное - задать фон диапазона А1: N35 (один из 56 цветов палитры
Currency отражение уже введенных значений диагонально. Excel);
Sales = InputBox(“Введите объем продаж”,”окно ввода”) - на рабочем листе "Заставка" создать графический объект,
For j = 1 to 5 Public Sub GenNumber() например, msoShapeUpRibbon ..., и выбрать его:
NumberHigh = 0 Dim I As Integer, j As Integer, Kolvo As Integer - установить для него цвет (свойство
For i = 1 to 36 Randomize ShapeRange .Fill .ForeColor.SchemeColor);
If Range (“SalesRange”).Cells(i,j) >= Sales Then NumberHigh = With Range(“Matrica”) - ввести текст, расположив его на графическом
NumberHigh + 1 Kolvo =.Rows.Count объекте.
Next i For i to Kolvo – 1
MsgBox”В регионе”_&_j_”_объем продаж превышал For j = i + 1 to Kolvo Public Sub Заставка()
заданную величину_”_&_”_в_”_&_NumberHigh _&_”_из 36 .Cells(i.j) = Int(Rnd*100) + 1 WorkSheet(“Заставка”).Select
месяцев”,vbInformation,”окно информации о продажах” Next j With ActiveWindow
Next j Next i .WindowState = xlMaximized
End Sub For i = 2 to Kolvo .DisplayGridlines = False
For j = 1 to i-1 .DisplayHeadings = False
Задача 2 .Cells(i,j) = .Cells(j,i) .Caption = ""
Написать программный код специального типа процедуры- Next j .DisplayHorizontalScrollBar = False
функции. Назначение функции – возвращать значение в Next i .DisplayVerticalScrollBar = False
процедуру или на рабочий лист Excel. В данном случае End With .DisplayWorkbookTabs = False
функция должна возвратить в ячейку G3 рабочего листа End Sub End With
Excel большее из двух чисел 10 и 13, переданных в нее. Range("A 1 :N35").Interior.ColorIndex = 43
Аргументы функции, в которые передаются значения, With Worksheets(“Заставка”)
обозначить через Number1, Number2. Полученное значение Задача 5 .Shapes.AddShape(msoShapeUpRibbon, 170, 125, 300,
занести в переменную Larger. Тип аргументов и функции Для установки интерфейса между приложением и 70).Select
определить как Integer. Написать, как должно выглядеть пользователем создается форма, содержащая следующие With Selection
содержимое ячейки G3 на рабочем листе Excel при элементы управления: два списка ListBox1 и ListBox2, два .ShapeRange.Fill.ForeColor.SchemeColor = 54
обращении из этой ячейки к функции Larger. переключателя OptionButton 1 и OptionButton2, счетчик .Characters.Text = "Мы готовы Вам помочь с депозитом"
SpinButtonl, два флажка CheckBox1 и CheckBox2, текстовое With .Font
Sub Number() поле TextBox1 и метка (подпись) Label1. Для определения .Name = "Arial"
Dim Number3 As Integer, Number4 As Integer, A As Integer внешнего вида формы при ее открытии от пользовательской .FontStyle = "Regular"
Number3 = InputBox("Введите первое число", "Ввод первого формы требуется добиться доведения: .Size = 12
числа") Список ListBox1 должен быть заполнен именами следующе- .Bold = True
Number4 = InputBox("Введите второе число", "Ввод второго го клиентов, расположенных на рабочем листе Excel в .Colorlndex = 2
числа") отдельном диапазоне с названием Customers. End With
A = LargerNumber(Number3, Number4) Список ListBox2 должен быть заполнен с помощью функции End With
End Sub Array значениями в диапазоне от 3 до 15 (при заполнении End With
списка использовать End Sub
Public Function LargerNumber(Number1 As Integer, Number2 свойство списка List).Переключатель OptionButton1 -
As Integer) As Integer выставлен, флажок CheckBox1 - установлен, а флажок
Dim Larger As Integer CheckBox2 - сброшен. Поле ввода TextBox1 и метка Label1
If Number1 > Number2 Then должны быть очищены. Счетчику SpinButton1 с помощью Задача 8
Larger = Number1 свойств Min и Max присвоить нижнюю и верхнюю границы Открыть книгу Excel "Торговый дом" па рабочем листе с
Else его изменения: 10 и 100 соответственно. именем "Торговые операции". Нa рабочем листе создан
Larger = Number2 Написать программный код для обработчика список, состоящий из двух полей: названия полей "Код
End If UserForm=Initialize, определяющего описанный выше продукта", "Цена продукта" расположены в ячейках A3 и
Range("G3").Value = Larger внешний вид формы. ВЗ соответственно. Количество записей в этом списке
LargerNumber = Larger заранее неизвестно. Написать программный код процедуры
End Function Private Sub OptionButton1_Click() выдачи на экран с помощью функции MsgBox информации о
CheckBox1.Value = True цене продукта, код которого вводится с клавиатуры с
Задача 3 CheckBox2.Value = False помощью функции Input Box. Пояснения для составления
Написать программный код специального типа процедуры- End Sub процедуры:
функции. Назначение функции – возвращать значение в - использовать два массива для размещения в них кодов
процедуру или на рабочий лист Excel. В данном случае Private Sub SpinButton1_Change() продуктов и цен
функция Larger должна возвратить в процедуру CallingSub TextBox2.Text = SpinButton1.Value на продукты соответственно;
большее из двух чисел 10 и 13, переданных в функцию из End Sub - подсчитать общее количество продукции, затем
процедуры. В процедуре CallingSub эти числа присвоены переопределить размер двух массивов;
переменным FirstName, SecondName соответственно. Каждая Private Sub UserForm_Initialize() - в цикле For эти массивы заполнить данными столбцов А и
из переменных имеет тип Integer. Полученный результат With Range(“A4”) В;
обращения к функции выдать на экран с помощью функции NR = Range (.offset(0,1), .End(xlDown)).Rows.Count - запросить у пользователя ввести код продукта и
MsgBox. Аргументы функции, в которые передаются For i = 1 to NR присвоить введенное
значения, обозначить через Number1, Number2. Полученное ListBox1.AddItem (Cells(4+i,1)) значение переменной. Затем еще в одном цикле For
значение занести в переименованную Larger. Тип аргументов Next i просмотреть массив кодов продукта в поиске введенного
и функции определить как Integer. End With кода продукта;
a = Array (3,4,5,6,7,8,9,10,11,12,13,14,15) - если код найден, то в переменной сохранить цену
Sub Calling() For i = 0 to 12 продукта по найденному коду, осуществить досрочный
Dim FirstName As Integer, SecondName As Integer, A As ListBox2.AddItem(a(i)) выход из цикла и вывести цену в окно сообщения. В
Integer Next i противном случае вывести сообщение о ненайденном товаре;
Range(“A1”).Value = 10 End Sub - использовать дополнительную переменную
Range(“A2”).Value = 13 логического типа, для определения найден код или нет.
FirstName = Range(“A1”) Задача 6
SecondName = Range(“A1”) Открыть книгу Excel “Коммерческие банки” на рабочем Sub LookUpPriceO
A = LargerNumber(FirstName, SecondName) листе с именем “Столичный экспресс”. Написать Dim ProdCode() As String, UnitPriceQ As Currency,
End Sub программный код процедуры, устанавливающей следующие ReguestedPrice As Currency, Nproducts As
свойства диапазону ячеек, расположенному на этом листе: Integer, i As Integer, Found As Boolean, ReguestedCode As
Function LargerNumber(Number1 As Integer, Number2 As - задает фон диапазону “A1:C20” (один из 56 цветов String
Integer) As Integer цветовой палитры Excel); With Active Workbook. Worksheets( "Продажи" ).Range("A3")
Dim Larger As Integer - осуществляет выбор диапазона “A2:M2”; Nproducts = Range(.Offset(1, 0), .End(xlDown)).Rows.Count
If Number1>Number2 Then - с выбранным диапазоном с использованием конструкции ReDim ProdCode(Nproducts)
Larger = Number1 With-End With выполнить следующие действия ReDim UnitPrice(Nproducts)
MsgBox”Большее число:”_&_Larger - слияние блока ячеек “A2:M2” в одну ячейку A2; For i = 1 To Nproducts
Else - ввод текста в ячейку A2; ProdCode(i) = .Offsetfi, 0)
Larger=Number2 - горизонтальное выравнивание по центру введенного UnitPrice(i) = .Offset(i, 1)
MsgBox”Большее число:”_&_Larger текста в ячейку A2; Next i
End If -выравнивание по вертикали по центру; End With
LargerNumber = Larger -с использованием конструкции With-End With установить ReguestedCode = InputВох("Введите код товара(большая
End Function следующие свойства для шрифта: буква и четыре цифры)")
- имя шрифта “Times New Roman”; Found = False
- размер шрифта – 20; For i = 1 То Nproducts
- полужирное начертание; If ProdCode(i) = ReguestedCode Then
- установка другого цвета шрифта; Found = True
- курсив. ReguestedPrice = UnitPrice(i)
End If
Public Sub Заставка() Next i
WorkSheet1(“Столичный экспресс”).Select If Found Then
Range("A1 :C20").Interior.ColorIndex = 43 MsgBox "Товар с кодом " & ReguestedCode & " стоит " &
Range("A2:M2").Select Format(ReguestedPrice, "0.00р."),
With Selection vbInformation, "Товар найден"
.Merge Else
.Value = "Добро пожаловать в БАНК УРАЛСИБ" MsgBox "Товара с кодом " & ReguestedCode & " нет в списке
.HorizontalAlignment = xlCenter ", vbInformation, "Товар не найден"
.VerticalAlignment = xlCenter End If
With .Font End Sub
.Name = "Times New Roman"
.Size = 20
.Bold = True
.ColorIndex = 6
.Italic = True
End With
End Sub
Задача 9 Задача 10 Задача 11
Открыть книгу Excel "Торговый дом" на рабочем листе с Открыть книгу Excel "Торговый дом" на рабочем листе с Разрабатывается приложение, в котором применяется
именем "Подведение итогов". На рабочем листе с помощью именем "Слияние списков". На рабочем листе созданы два пользовательская форма «Сведения о товарах». На форме
программного кода процедуры ProdSales создать список, списка в столбце Аи в столбце В соответственно: названия расположены следующие элементы: текстовое поле -
состоящий из трех полей: названия полей "Код продукта", полей "Клиенты 1", "Клиенты 2» расположены в ячейках A3 ProductBox, список - CustomerList, два переключателя –
"Количество продаж” и "Объем продаж" расположить в и ВЗ соответственно. Одинаковых фамилий в списках нет. OptionButton1 и OptionButton2, кнопка - OkButton, Написать
ячейках ЕЗ и F3 и G3 соответственно. Количество записей в Количество записей в этих списках неодинаково и заранее программный код процедуры OkButton_Click, который
этом списке будет определяться переменной NFound. неизвестно. Написать программный код процедуры выполняет следующие действия:
Написать программный код процедуры формирования формирования нового списка путем объединения двух - проверяет, является ли содержимое поля ввода ProductBox
записей списка на рабочем листе элементами уже исходных списков, новый список расположить в столбце D, пустым или введенное значение не является числовым. Если
сформированных массивов ProdCodes(Nfound), заголовок которого - в ячейке D3. Выдать на экран с да, то выдается соответствуюшее сообщение с помощью
Quantity(Nfound), Dollars (Nfound). Пояснения для помощью функции MsgBox сообщение о количестве функции MsgBox и происходит досрочный выход из
составления процедуры: элементов - фамилий в сформированном списке. Пояснения процедуры. Если код введен правильно, то переменной
- в начале программного кода выполнить описание для составления процедуры: РroductCod присваивается введенное в текстовое поле
переменной Nfound как целой, и массивов размера NFound - удалить старый список в столбце D, начиная с ячейки D4. значение.
как первых двух целых и третьего денежного; - с помощью управляющих структур With - End With: - с помощью управляющей структуры With - End With
- затем занести элементы массивов в столбцы с - получить размер списка в столбце А, начиная с ячейки А4 проверяет, выбран ли клиент в списке CustomerList. Если да,
использованием цикла и переслать фамилии клиентов из этого столбца в массив то выбранное значение присваивается переменной Customer,
For и управляющей структуры With - End With; List1. если нет, то выдается соответствующее сообщение, курсор
- выполнить сортировку списка по объему продаж в порядке - получить размер списка в столбце В, начиная с ячейки В4 устанавливается в список и происходит досрочный выход из
убывания, в сортировке заголовки полей не участвуют; и переслать фамилии клиентов из этого столбца в массив процедуры.
- с помощью функции MsgBox вывести количество записей в List2. - переменной Region присваивает значение "East", если
списке. - выполнить объединение элементов двух массивов List1 и установлен переключатель OptionButton1, или значение
List2, расположив в массиве List3 элементы массива List1, а "West” если установлен переключатель OptionButton2.
Option Explicit затем добавить элементы массива List2.
Option Base 1 - занести элементы объединенного массива List3 в столбец D, Private Sub Command Button_Click()
Sub ProdSales() с ячейки D4. Pc=Val(TextBox1.Text)
Dim Nsales As Integer, ProdCodesData() As Integer, - с помощью функции MsgBox вывести количество записей в If pc=0 then
ProdCodesFound() As Integer, Quantity() As списке. MsgBox (“Введено неверно”)
Integer, DoIIarsData() As Single, DollarsTotal() As Single, i As - перейти в программном коде к ячейке А2 End
Integer, j As Integer, NFound As Else
Integer, NewProduct As Boolean Sub MergeLists() If ListBox1.Value<>”” Then
With Active Workbook. Worksheets("Topговые Dim i As Integer, j As Integer If Option Button1=True Then
операции").Range("E3") Dim LS1 As Integer, LS2 As Integer, List1() As String, List2() MsgBox (“East”)
Range(.Offset(1. 0), .Offset(0, 2).End(xIDown)).ClearContents As String Else
End With Dim LS3 As Integer, Index 1 As Integer, Index2 As Integer, MsgBox (“West”)
With Active Workbook. Worksheets("Topговые операции Name1 As String, Name2 As String End If
").Range("A3") List3 () As String Else
Nsales = Range(.Offset(1, 0), .End(xlDown)).Rows.Count WithRange("D3") MsgBox (“Не выбрали строку”)
ReDim ProdCodesData(Nsales) Range(.Offset(1, 0), .Offset(1, 0).End(xIDown)).ClearContents End
ReDim DollarsData(Nsales) End With End If
For i = 1 To Nsales WithRange("A3") End If
ProdCodesData(i) = .Offset(i, 0) LS1 = Range(.Offset(l, 0), .End(xlDown)).Rows.Count
DollarsData(i) = .Offset(i, 2) ReDimList1(LS1) Private Sub UseForm _Activate()
Next i For i= 1 To LS1 For i=1 to 15
End With List1(i) = .Offset(i, 0) ListBox1.AddItem(i)
NFound = 0 Next i Next
For i = 1 To Nsales LS2 = Range(.Offset(1, 1), .Offset(0, End Sub
NewProduct = True 1).End(xIDown)).Rows.Count
If NFound > 0 Then ReDim List2(LS2)
For j = 1 To NFound For i = 1 To LS2
If ProdCodesData(i) = ProdCodesFound(j) Then List2(i) = .Offset(i, 1) Задача 12
NewProduct = False Next i Открыть книгу Excel «Торговый дом» на рабочем листе с
Quantity(j) = Quantity(j) + 1 End With именем «Продажи». На рабочем листе расположена таблица.
DollarsTotal(j) = DollarsTotal(j) + DollarsData(j) LS3 = 0 Количество строк и столбцов в таблице заранее не
Exit For Index1= 1 определено. Каждая строка, начиная с четвертой,
End If Index2 = 1 соответствует региону продаж, а каждый столбец, начиная со
Nextj Do While Index 1 <= LS1 And Index2 <= LS2 столбца с именем В, соответствует месяцу, по которому
End If Namel1= List 1 (Index 1) ведется учет данных. На пересечении строк и столбцов
If NewProduct Then Name2 = List2(Index2) расположены объемы продаж в различных регионах в разные
NFound = NFound + 1 LS3 = LS3 - 1 периоды времени. Необходимо получить общий объем
ReDim Preserve ProdCodesFound(NFound) ReDim Preserve List3(LS3) продаж по всем регионам за все месяцы и вывести его на
ReDim Preserve Quantity(NFound) If Name1 < Name2 Then экран с помощью окна сообщения, сопроводив
ReDim Preserve DollarsTotal(NFound) List3(LS3) = Name1 определенными комментариями. Заполнение таблицы
ProdCodesFound(NF ound) = ProdCodesData(i) Index1 = Index 1 + 1 объемами продаж начинается с ячейки В4. Пояснения для
Quantity(NFound) = 1 Elself Name 1 > Name2 Then составления процедуры GrandTotal:
DollarsTotal(NFound) = DollarsData(i) List3(LS3) = Name2 - объявить переменные в программном коде, предусмотрев
End If Index2 = Index2 + 1 переменную для вычисления итоговой суммы Totals,
Next i Elself Name1 =Name2 Then переменные для определения количества месяцев Nmonths и
Forj = 1 To NFound List3(LS3) = Name2 регионов NRegions;
With Range("E3") Index I = Index 1 + 1 - с помощью структуры управления With-End With
.Offset(j, 0) = ProdCodesFound() Index2 = Index2 + 1 определить количество месяцев и регионов в таблице
.Offset(j, 1) = Quantity(j) End If «Продажи в регионах по месяцам»;
.Offset(j, 2) = DollarsTotal() Loop - суммирование объемов продаж выполнить с
End With If Index 1 > LS1 And Index2 <=LS1 Then использованием структуры управления With-End With;
Nextj For i = Index2 To LS2 - перебор элементов матрицы объемов продаж осуществлять
Range("E4").Sort Key1 :=Range("G4"), Order1:=xlDescending, LS3 = LS3 + 1 вложенными циклами For относительно ячейки A3;
Header:=xlYes ReDim Preserve List3(LS3) - с помощью функции MsgBox вывести суммарный объем
MssBox "В базе данных проданных товаров найдено " & List3(LS3) = List2(i) продаж;
NFound & " наименований" Next i - перейти в программном коде к ячейке В4.
End Sub Elself Index 1 <= LS1 And Index2 > LS2 Then
For i = Index 1 To LS1 Dim op() as single
LS3 = LS3 + 1 Dim NM as integer
ReDim Preserve List3(LS3) Dim NR as integer
List3(LS3) = Listl(i) Dim s as single
Nexti Dim I as integer
End If Dim о as integer
WithRange("D3")
For i = 1 To LS3 Sub GenTotal()
.Offset(i, 0) = Li"st3(i) With Range (“A4”)
Next i NR=Range(.Offset(0,1), .End(xlDown)).Rows.Count
End With Redim op(NR,1)
Range("A2").Select NM=0
End Sub J=1
ST=Range(“B3”).Value
S=0
While ST<>” “
NM=NM+1
Redim op(NR, NM)
For i=1 to NR
Op(i,j)=Cells(4+i-1, 2+j-1).Value
S=s+op(i,j)
Next i
j=j+1
p=3+NM
ST=Cells(3,2+j-1).Value
Wend
MsgBox(“Число месяцев” & NM)
MsgBox(“Количество регионов” & NR)
MsgBox(“Сумма” & S)
End With
End Sub
Задача 13
Открыть книгу Excel “Торговый дом” на рабочем листе с
именем «Продажи». На рабочем листе расположена таблица.
Количество строк и столбцов в таблице заранее не
определено. Каждая строка, начиная с четвертой,
соответствует региону продаж, а каждый столбец, начиная со
столбца с именем В, соответствует месяцу. По которому
ведется учет данных. На пресечении строк и столбцов
расположены объемы продаж в различных регионах в разные
периоды времени. Заполнение таблицы объемами продаж
начинается с ячейки В4. Написать процедуру, которая
вычисляет суммарные объемы продаж по регионам для
каждого месяца и по месяцам для каждого региона.
Пояснения для составления процедура GetTotal:
- объявить переменные в программном коде, предусмотрев
переменные для определения суммарного объема продаж по
каждому месяцу – MonthTotal и определения суммарного
объема продаж по каждому региону RegionTotal, а также
переменные Nmonths и NRegions для подсчета количества
месяцев и количества регионов соответственно;
- с помощью структуры управления With –End With
определить количество месяцев и регионов в таблице
«Продажи в регионах по месяцам»;
- суммирование объемов продаж выполнить с
использованием структуры управления With –End With
- перебор элементов матрицы объемов продаж осуществить
вложенными циклами For относительно ячейки А3
- вложенными циклами For просуммировать объемы продаж
для каждого региона, предусмотрев вывод итоговой суммы
по каждому региону внутри цикла, в первую пустую ячейку,
расположенную справа от объемов продаж строки с этим
регионом:
- отдельными вложенными циклами For просуммировать
объемы продаж для каждого месяца, предусмотрев вывод
итоговой суммы по каждому месяцу внутри цикла, в первую
пустую ячейку ниже объемов продаж столбца с этим
месяцем;
- с помощью функции MsgBox вывести подсчитанное
количество регионов и месяцев данной таблицы;
- перейти в программном коде к ячейке В4.

Dim MT() as Single, RT() as Single, OP() as Single, NM As


Integer, NR as Integer, I as Integer, j as integer

Sub GenTotal ()
With Range (“A4”)
NR=Range(.OffSet(0,1), .End(xlDown).Rows.Count
Redim RT(NR)
NM=0
j=1
For i=1 to NR
RT(i)=0
Next i
ST=Range(“B3”).Value
While st<>” “
NM=NM+1
Redim OP(NM, NM)
Redim MT(NM)
MT(j)=0
For i=1 to NR
OP(i,j)=Cells(4+i-1, 2+j-1).Value
MT(j)=MT(j)+OP(i,j)
RT(i)=RT(i)+OP(i,j)
Next
Stm=stm&””&RT(i)
j=j+1
p=3+NM
st=Cells(3, 2+j-1).Value
Wend
For i=1 to NR_ strr=strr&” “ & RT(i)_Next i
MsgBox(“Число месяцев” & NM)
MsgBox(“Число регионов” & NR)
MsgBox(“Сумма по месяцам” & stm)