RSS    

   Реферат: Решение экономических задач с помощью VBA

Пусть Xj – кол-во стандартных рулонов, разрезанных по варианту j, где j[1..19]. Ограничения налагаемые на переменные Xj связаны с требованием обеспечить изготовление заказанного кол-ва нестандартных рулонов. Ф-ция цели учитывает суммарные отходы, получаемые при выполнении заказа. Таким образом имеем следующую мат. модель:

Минимизировать:

Z=x1+2x3+x4+2x5+x7+3x8+2x11+2x12+2x13+x14+x15+3x16+

+2x18 + 4(x5+x6+x7+x8+x9+2x10+2x11+2x12+2x13+3x14+4x15+4x16+4x17+5ч18+7x19-220)+ 6(...-210)+9(...-350)+

+11(...-380)

    Отведем диапазон ячеек (i4:i22) под переменные . Введем в диапазон ячеек (j3:m3) левые части ограничений, определенные слежующими формулами:

         =СУММПРОИЗВ($I$4:$I$22;B4:B22)

=СУММПРОИЗВ($I$4:$I$22;c4:c22)

=СУММПРОИЗВ($I$4:$I$22;d4:d22)

    =СУММПРОИЗВ($I$4:$I$22;e4:e22)

В ячейку N4 введем ф-цию цели:

=СУММПРОИЗВ($I$4:$I$22;F4:F22)+B3*(СУММПРОИЗВ($I$4:$I$22;B4:B22)-J3)+C3*(СУММПРОИЗВ($I$4:$I$22;C4:C22)-K3)+D3*(СУММПРОИЗВ($I$4:$I$22;D4:D22)-L3)+E3*(СУММПРОИЗВ($I$4:$I$22;E4:E22)-M3)

где в ячейки B3:E3 введены длины, а в ячейки J3:M3 – кол-ва заказанных рулонов

     Выберем команду сервис – Поиск решения и заполним открывшееся диалоговое окно Поиск решения (Solver):

- Установим целевую ячейку – N4

- Изменяя ячейки I4:I22

- Ограничения $I$4:$I$22=целое

              $I$4:$I$22>=0

                 $j$4:$m$4>=$j$3:$m$3    

   - Ф-ция = минимизация

К о л - в а    з а к а з а н н ы х    р у л о н о в
220 210 350 380 Отходы
220 210 350 380 49,99996

2.3.7 База данных

  

    Создадим поля базы данных, и занесем их в таблицу. База данных будет заполняться программой, программе не требуются названия полей, но для облегчения ориентации в первой строке введем данные соответствующие полям БД

   Создадим кнопку “Добавление”  для добавления записей в БД, делается это так: Вызываем панель инструментов на которой расположены примитивы, т.е. окна ввода, кнопки и т.д. Создаем на форме кнопку, и спомощью св-ва Caption присваиваем ей название “Добавление”

    Создадим макрос который будет отвечать за обработку событий по нажатию этой кнопки. Перейдем в среду Visual Basic for Application и в меню «Вставка» выберем UserForm, на эту форму и поместим все обьекты оговоренные в условии(m раскрывающихся списков, n полей ввода, ...).

     В макросе отвечающем за событие кнопки «Добавление» введем процедуру которая будет активизировать форму UserForm1, и заносить все данные из окна ввода в ячейки листа A4:L4, A5:L5 и т.д.

  По нажатию кнопки “OK” выполнится следующий код программы:

 Окно ввода выглядит следующим образом:

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

     

  1.  А.Гарнаев. Использование MS Excel и VBA в экономике и финансах

  2. С. Браун, Visual Basic 5.0 с самого начала, Москва 1999, издательство “Питер” 

  3.  Microsoft Visual Basic – on-Line HELP

       

ПРИЛОЖЕНИЕ 1

    ПРОГРАММА НА ЯЗЫКЕ MICROSOFT VISUAL BASIC

Модуль 1:

Sub Return_To_MainMenu()

 Worksheets("Содержание").Activate

End Sub

Модуль 2:

Sub Task1()

 Worksheets("Задание1").Activate

End Sub

Sub Task2()

 Worksheets("Задание2").Activate

End Sub

Sub Task3()

  Worksheets("Задание3").Activate

End Sub

Sub Task4()

 Worksheets("Задание4").Activate

End Sub

Sub Task1_Evrica()

 Dim mas1(3) As Integer

 Dim mas2(3) As Integer

 Dim Mas_I1(3) As Integer

 B = Worksheets("Задание1").Range("B11").Value

 c = Worksheets("Задание1").Range("C11").Value

 D = Worksheets("Задание1").Range("D11").Value

 mas1(1) = B

 mas1(2) = c

 mas1(3) = D

 i = 1

 l = 0

 Do

    k = mas1(i)

    ''''' Занесение в массив Mas2 эл-тов >1490

    If k > 1490 Then mas2(i) = mas1(i) Else mas2(i) = 0

    i = i + 1

 Loop Until i = 4

 

 Max = -1

 i = 0

 Do

       i = i + 1

       If mas2(i) > Max Then

        Max = mas2(i)

        indm = i

       End If

 Loop Until i = 3

 Worksheets("Задание1").Cells(12, indm + 1).Value = Max * 0.02 + Max * 0.04

 'Worksheets("Задание1").Range("f15").Value = r

                   'GoTo l

 ''''' Находим MAx эл-т из оставшихся,

 ''''' и запоминаем его индеск

 Max = -1

 i = 0

 Do

       i = i + 1

       If i <> indm And mas2(i) > Max Then

          Max = mas2(i)

          indm2 = i

       End If

 Loop Until i = 3

 Worksheets("Задание1").Cells(12, indm2 + 1).Value = Max * 0.02 + Max * 0.02

 ''''' Находим MAx эл-т из оставшихся,

 ''''' и запоминаем его индеск

 Max = -1

 i = 0

 Do

       i = i + 1

       If mas2(i) > Max And i <> indm2 And i <> indm Then

       Max = mas2(i)

       indm3 = i

       End If

 Loop Until i = 3

 Worksheets("Задание1").Cells(12, indm3 + 1).Value = Max * 0.02 + Max * 0.01

 End Sub

Sub Task2_Evrica()

Dim AA_1(3) As Integer

B = Worksheets("Задание2").Range("B11").Value

c = Worksheets("Задание2").Range("C11").Value

D = Worksheets("Задание2").Range("D11").Value

AA_1(1) = B

AA_1(2) = c

AA_1(3) = D

i = 0

Do

 i = i + 1

 If AA_1(i) < 700 Then Worksheets("Задание2").Cells(12, i + 1).Value = Worksheets("Задание2").Cells(11, i + 1).Value * 0.01

 If AA_1(i) >= 700 And AA_1(i) < 1400 Then Worksheets("Задание2").Cells(12, i + 1).Value = Worksheets("Задание2").Cells(11, i + 1).Value * 0.015

 If AA_1(i) >= 1400 And AA_1(i) < 2800 Then Worksheets("Задание2").Cells(12, i + 1).Value = Worksheets("Задание2").Cells(11, i + 1).Value * 0.023

 If AA_1(i) >= 2800 Then Worksheets("Задание2").Cells(12, i + 1).Value = Worksheets("Задание2").Cells(11, i + 1).Value * 0.025

Loop Until i = 3

End Sub

Sub Task3_Evrica()

 Dim AA_2(10) As Integer

 

 Dim MM_1(10) As Integer

 Dim MM_2(10) As Integer

 Dim MM_3(10) As Integer

 Dim MM_4(10) As Integer

 Dim MM_5(10) As Integer

Worksheets("Задание3").Range("I3:I12").Clear

Worksheets("Задание3").Range("b3:h12").Font.Bold = False

Worksheets("Задание3").Range("b3:h12").Font.Size = 10

Worksheets("Задание3").Range("b3:h12").Font.Italic = False

i = 0

Do

 i = i + 1

 AA_2(i) = Worksheets("Задание3").Cells(i + 2, 7).Value

Loop Until i = 9

Max = -1

i = 0

Do

i = i + 1

If AA_2(i) > Max Then

Max = AA_2(i)

mm = i

End If

Loop Until i = 9

Worksheets("Задание3").Cells(mm + 2, 8).Value = "Макс. Цена на товар"

Min = 100000

i = 0

Do

i = i + 1

If AA_2(i) < Min Then

Min = AA_2(i)

mm2 = i

End If

Loop Until i = 9

Worksheets("Задание3").Cells(mm2 + 2, 8).Value = "Миним. Цена на товар"

'''''''''''''''''''''''''''''

i = 0

Do

 i = i + 1

 MM_1(i) = Worksheets("Задание3").Cells(i + 2, 2).Value

 MM_2(i) = Worksheets("Задание3").Cells(i + 2, 3).Value

 MM_3(i) = Worksheets("Задание3").Cells(i + 2, 4).Value

 MM_4(i) = Worksheets("Задание3").Cells(i + 2, 5).Value

 MM_5(i) = Worksheets("Задание3").Cells(i + 2, 6).Value

Loop Until i = 9

'''' 1

Min = 100000

i = 0

Do

i = i + 1

If MM_1(i) < Min Then

Min = MM_1(i)

x1 = i

End If

Loop Until i = 9

Worksheets("Задание3").Cells(x1 + 2, 2).Font.Bold = True

Worksheets("Задание3").Cells(x1 + 2, 2).Font.Size = 11

Worksheets("Задание3").Cells(x1 + 2, 2).Font.Italic = True

'''' 2

Min = 100000

i = 0

Do

i = i + 1

If MM_2(i) < Min Then

Min = MM_2(i)

x2 = i

End If

Loop Until i = 9

Worksheets("Задание3").Cells(x2 + 2, 3).Font.Bold = True

Worksheets("Задание3").Cells(x2 + 2, 3).Font.Size = 11

Worksheets("Задание3").Cells(x2 + 2, 3).Font.Italic = True

'''' 3

Min = 100000

i = 0

Do

i = i + 1

If MM_3(i) < Min Then

Страницы: 1, 2, 3, 4, 5, 6, 7


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.