«Написать программу на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран: ... ... ... »
Именно так часто звучит задание на курсовую работу… Конечно, перед этой фразой идет описание исходных данных (по вариантам), т.е. ситуации, на основе которой вам необходимо будет создать базу данных Excel и заполнить ее начальными тестовыми данными…
После этой фразы тоже идет информация по вариантам: точное описание запросов, которые должна выполнить ваша VBA программа.
Макросы VBA Excel позволяют программировать любые действия с данными… Достаточно знать, где располагаются исходные данные (т.е. структуру БД) и что требуется получить на выходе…
Итак, допустим есть Условие (ситуация по варианту):
В коллективном хозяйстве имеется 7 бригад, выращивающих в течение 5 (и более) лет 7 фруктово-ягодных культур. (Каждая бригада специализируется на одной культуре). Выращенные фруктово-ягодные культуры затем продаются по ценам, меняющимся каждый год.
Поэтому на Листе «Данные» создается таблицу. Это и будет база данных (БД Excel). Ее можно расширять вниз, добавлять данные за следующие года… Но структуру изменять нельзя… Каждый год должен иметь по две строки: урожай в центнерах и цена в рублях.
Кроме того, необходимо отвести одну из ячеек (например: D28) для ввода номера года (последнего из 5 лет, по которым производится анализ). Это тоже данные для макроса, без которых он не сможет выполнять расчеты, т.к. не понятно, какие 5 лет учитывать…
И, конечно, надо позаботиться об исполнительной командной кнопке (разместить на листе), которая и будет вызывать макрос… Например, обозвать её: «Результаты анализа данных»…
Макрос должен не только произвести нужные вычисления, сформировать отчет, но и перебросить пользователя на лист с результатами анализа…

Рис.1 На Листе Excel "Данные" также расположены и средства запуска макроса
Далее, Условие (описание запросов…, то, что выводится на экран):
- исходные данные в виде таблицы, где перечислены названия бригад, наименование фруктово-ягодной культуры, количество собранного урожая за год (в центнерах), цена, по которой был продан урожай, выращенный одной бригадой;
- доход каждой бригады за 5 лет;
- доход всего хозяйства за 3(третий) год;
- наименование фруктово-ягодной культуры, принесшей наибольший доход за 5 лет;
- название бригады, получившей наименьший доход за 5 лет.
Решение:

Рис.2 Отчет "Результаты анализа" на Листе Excel средствами макроса VBA
Лист «Результаты анализа» заполняется макросом по щелчку левой кнопкой мыши по командной кнопке «Результаты анализа данных»…
Вверху листа располагается таблица «Список бригад в коллективном хозяйстве», но это не вся БД, а только данные за пять лет. Если бы был указан для анализа 2008 год, то скопировались бы данные за 2003-2008 годы. Это ответ на первый вопрос задания…
Далее, под заголовком «Анализ по результатам 2005 года» идут ответы на 2-5 вопросы задания.
Этот лист тоже имеет командную кнопку, но предназначена она лишь для очистки отчета…
VBA Макрос очистки может выглядеть так:
Sub ClearResult() 'очистить результаты
Set resL = Sheets("Результаты анализа")
resL.Cells(r2, c2 + 1).ClearContents 'очистка год анализа
resL.Range(resL.Cells(r2 + 3, c2 + 1), resL.Cells(r2 + 3, c2 + 5)).ClearContents 'очистка годов в шапке таблицы
resL.Range(resL.Cells(r2 + 4, c2), resL.Cells(r2 + 10, c2 + 6)).ClearContents 'очистка таблицы
resL.Cells(r2 + 12, c2 + 3).ClearContents
resL.Cells(r2 + 14, c2 + 3).ClearContents
resL.Cells(r2 + 16, c2 + 5).ClearContents
resL.Cells(r1 + 5, c1) = "" 'очистка годов в верхней таблице
resL.Cells(r1 + 7, c1) = ""
resL.Cells(r1 + 9, c1) = ""
resL.Cells(r1 + 11, c1) = ""
resL.Cells(r1 + 13, c1) = ""
resL.Range(resL.Cells(r1 + 2, c1 + 2), resL.Cells(r1 + 14, c1 + 8)).ClearContents 'очистка верхней таблицы
'освобождаю объектные переменные
Set resL = Nothing
End Sub
где r1, r2, c1, c2 целочисленные константы, обеспечивающие нужное расположение таблиц на листе...
При необходимости проконсультирую по Skype…
Другие примеры на тему «Автоматизация документов Microsoft Office Excel, Word, Access»
Другие примеры на языке «Visual Basic for application - VBA»
Другие варианты курсовой очень похожи на предыдущий… Проблем с их решением быть не должно…
Поделиться в соц сетях: