29
Завод за унапређивање образовања и васпитања Аутор рада: Наставни предмет: Тема: Узраст: Потребна технологија: Драган Лукић,ТШ Петар Драпшин, Београд Конструисање(вежбе), Рачунари у машинству Примена VBA при изради варијантних прорачуна у конструисању Четврти разред средње школе Компјутери Кликните овде за унос приказа часа у Word документу!

VBA

Embed Size (px)

Citation preview

Завод за унапређивање образовања и васпитања

Аутор рада:

Наставни предмет:

Тема:

Узраст:

Потребна технологија:

Драган Лукић,ТШ Петар Драпшин, Београд

Конструисање(вежбе), Рачунари у машинству

Примена VBA при изради варијантних прорачуна у конструисању

Четврти разред средње школе

Компјутери

Кликните овде за унос приказа

часа у Word документу!

Примена Примена VBAVBA при изради варијантних при изради варијантних прорачуна у конструисањупрорачуна у конструисању

I I часчас- - Коришћење програма Коришћење програма Visal Basic for ApplicationVisal Basic for Application

1. Увод1. Увод 22.. Снимање макроа Снимање макроа VBAVBA 33. . Писање сопственог командног макроаПисање сопственог командног макроа 4. 4. Извршавање процедуре при отварању радне свескеИзвршавање процедуре при отварању радне свеске 5. 5. Израда кориснички дефинисаних функција помоћу Израда кориснички дефинисаних функција помоћу VBA VBA

IIII час час -- 1. 1. Израда сопственог оквира за дијалогИзрада сопственог оквира за дијалог

2. Вежба- Израда маске за унос података2. Вежба- Израда маске за унос података

I - I - Коришћење програма Коришћење програма Visal Basic for Visal Basic for ApplicationApplication

1. 1. УводУвод Прорачуни машинских елемената и конструкција на вежбама из Прорачуни машинских елемената и конструкција на вежбама из предмета Конструисање и Рачунари у машинству, изводе се на рачунарима предмета Конструисање и Рачунари у машинству, изводе се на рачунарима коришћењем програма за табеларна израчунавања. Програм који се за ово коришћењем програма за табеларна израчунавања. Програм који се за ово најчешће користи је, свакако, најчешће користи је, свакако, MS Excel, a ExcelMS Excel, a Excel садржи уграђен садржи уграђен VBA.VBA.

VBA (Visual Basic for Application) VBA (Visual Basic for Application) је изузетно снажан програмски језик је изузетно снажан програмски језик фирме фирме Microsoft Microsoft који служи за програмирање макроа.који служи за програмирање макроа.

Макро је мали програм који садржи низ инструкција које желимо да будуМакро је мали програм који садржи низ инструкција које желимо да буду извршене.извршене.

Excel Excel је први програм у који је укључен је први програм у који је укључен VBAVBA, затим је исто урађено и са , затим је исто урађено и са комплетним комплетним Office Office пакетом, а сада и многе друге апликације које нису пакетом, а сада и многе друге апликације које нису производ фирме производ фирме MicrosoftMicrosoft, захваљујући лиценцирању,, захваљујући лиценцирању, имају укључен имају укључен VBA.VBA.

Основна разлика између Основна разлика између VBA VBA ии других програмских језика је у томе што других програмских језика је у томе што се се VBA VBA покреће заједно са програмом - домаћином као што је нпр. покреће заједно са програмом - домаћином као што је нпр. MSMS Word, Word, Excel, AutoCAD, ProDesktop Excel, AutoCAD, ProDesktop и др. доносећи низ врло интелигентних и и др. доносећи низ врло интелигентних и ефикасних алата. ефикасних алата.

Аутоматизовање процедуре која се често изввршава.Аутоматизовање процедуре која се често изввршава.

Прављење наменске команде или наменског дугмета.Прављење наменске команде или наменског дугмета.

Прављење поједностављеног, предусретљивог програма за неке Прављење поједностављеног, предусретљивог програма за неке друге кориснике.друге кориснике.

Прављење нове функције радног листа.Прављење нове функције радног листа.

Прављење потпуних, заштићених апликација које покрећу макрои.Прављење потпуних, заштићених апликација које покрећу макрои.

Прављење наменских допунских модула за Прављење наменских допунских модула за Excel.Excel.

Осим тога Осим тога VBA VBA омогућује манипулисање, модификовање података омогућује манипулисање, модификовање података из других апликација као што су из других апликација као што су Visio ili AutoCAD. Visio ili AutoCAD. На пример, могуће је из На пример, могуће је из MSMS Access Access базе изети потребне податке, пребацити их у базе изети потребне податке, пребацити их у ExcelExcel-ов радни -ов радни лист и на основу тих података задати параметре програму за лист и на основу тих података задати параметре програму за моделирање машинских елемената.моделирање машинских елемената.

Шта можете да урадите у Шта можете да урадите у Excel Excel -- у помоћу у помоћу VBA ?VBA ?

Оквир за дијалог Оквир за дијалог Record New Macro Record New Macro за за давање имена и описа макроадавање имена и описа макроа

2. 2. Снимање макроа Снимање макроа VBAVBA Најлакши начин да направите макро је да употребите Најлакши начин да направите макро је да употребите Macro Recorder.Macro Recorder.

Овом методом је довољно да прођете кроз послове које хоћете да Овом методом је довољно да прођете кроз послове које хоћете да аутоматизујете и аутоматизујете и Excel Excel све преводи у одговарајући све преводи у одговарајући VBAVBA исказ. Ти искази се копирају исказ. Ти искази се копирају у засебни лист који се зове у засебни лист који се зове модулмодул, одакле поново пуштате процедуру када вам је то , одакле поново пуштате процедуру када вам је то потребно. потребно. Следећи поступак води вас кроз кораке за снимање командног макроа:Следећи поступак води вас кроз кораке за снимање командног макроа:

1. Одаберите команду 1. Одаберите команду Tools Tools ⇨⇨ Macro Macro ⇨⇨ Record New Macro Record New Macro или кликните на дугме или кликните на дугме Record Macro Record Macro на линији алата на линији алата Visual Basic. Excel Visual Basic. Excel приказује оквир за дијалог приказује оквир за дијалог Record Record New Macro, New Macro, приказан на слици.приказан на слици.

2. 2. Excel Excel предлаже име за макро (нпр.предлаже име за макро (нпр. Macro1) Macro1), али то име можете , али то име можете променити. Морате да следите уобичајену конвенцију за давање имена у променити. Морате да следите уобичајену конвенцију за давање имена у Excel – Excel – у: први знак мора бити слово или знак за подвлачење (_), а празна у: први знак мора бити слово или знак за подвлачење (_), а празна места и тачке нису дозвољене.места и тачке нису дозвољене.

3. Унесите опис макроа у поље за текст3. Унесите опис макроа у поље за текст Description. Description.

4. 4. Ако желите можете у поље Ако желите можете у поље Shortcut key Shortcut key уписати комбинацију уписати комбинацију тастера којом ће се извршавати макро.тастера којом ће се извршавати макро.

55. . Изаберите ОК. Изаберите ОК. Excel Excel вас враћа на радни лист, приказује вас враћа на радни лист, приказује Recording Recording на статусној линији и приказује линију алата на статусној линији и приказује линију алата Stop Recording.Stop Recording.

6. Урадите послове које желите да укључите у макро.6. Урадите послове које желите да укључите у макро.

7. Када завршите послове, кликните на дугме 7. Када завршите послове, кликните на дугме StopMacro. StopMacro.

Палета Палета Stop RecordingStop Recording има алатку која се зове има алатку која се зове Relative RecordingRelative Recording. Ако . Ако ову алатку притиснете док снимате макро, ову алатку притиснете док снимате макро, Excel Excel ће променити начин ће променити начин снимања из апсолутног (који је подразумеван) у релативни.снимања из апсолутног (који је подразумеван) у релативни. Ma Maкро који је кро који је снимљен у релативном режиму као основу користи активну ћелију, а затим снимљен у релативном режиму као основу користи активну ћелију, а затим чува релативне референце до те ћелије. На пример, ако снимамо у чува релативне референце до те ћелије. На пример, ако снимамо у релативном режиму, а активна је ћелија А1, избор скупа ћелија релативном режиму, а активна је ћелија А1, избор скупа ћелија C1:C10C1:C10 генерише следећу наредбу:генерише следећу наредбу: ActiveCell.Offset(0, 2).Ranдe("A1:A10").SelectActiveCell.Offset(0, 2).Ranдe("A1:A10").Select У апсолутном режиму У апсолутном режиму Excel Excel ће тај скуп ћелија снимити као:ће тај скуп ћелија снимити као: Ranдe("A1:A10").SelectRanдe("A1:A10").Select Важно је разумети ову разлику јер режим снимања може да доведе до Важно је разумети ову разлику јер режим снимања може да доведе до битне разлике у начину извршавања макроа.битне разлике у начину извршавања макроа.

Дугме Дугме StopMacroStopMacro Дугме Дугме Relative RecordingRelative Recording

3. 3. Писање сопственог командног макроаПисање сопственог командног макроа

Macro RecorderMacro Recorder знатно олакшава прављење макроа, али знатно олакшава прављење макроа, али постоје и многе могућности макроа којима не можете приступити постоје и многе могућности макроа којима не можете приступити преко миша или тастатуре или бирајући опције менија. На пример, преко миша или тастатуре или бирајући опције менија. На пример, VBAVBA садржи већи број информацијских макро функција које дају садржи већи број информацијских макро функција које дају као резултат податке о ћелијама, радним листовима, радној као резултат податке о ћелијама, радним листовима, радној околини и др. Такође, контролне функције омогућавају вам да околини и др. Такође, контролне функције омогућавају вам да додате праве програмске конструкције, као што су петље, гранање додате праве програмске конструкције, као што су петље, гранање и доношење одлука. и доношење одлука.

За приступ овим елементима макроа, потребно је да За приступ овим елементима макроа, потребно је да напишете напишете VBA VBA рутину од почетка.рутину од почетка.

Пре него што унесте код морате да уметнете модул у радну Пре него што унесте код морате да уметнете модул у радну свеску. Уколико радна свеска већ има лист с модулом, можете да свеску. Уколико радна свеска већ има лист с модулом, можете да употребите постојећи лист са модулом за нов код.употребите постојећи лист са модулом за нов код.

VBAVBA модул се састоји од процедура са потпрограмима. То је, модул се састоји од процедура са потпрограмима. То је, у ствари, рачунарски код који изводи неке операције над у ствари, рачунарски код који изводи неке операције над објектима.објектима.

Да бисте уметнули нов модул урадите следеће:Да бисте уметнули нов модул урадите следеће:

1.1. Притисните Притисните Alt + F11Alt + F11 да бисте активирали прозор да бисте активирали прозор VisualVisual Basic Editor.Basic Editor. ПрозорПрозор Visual Visual Basic EditorBasic Editor је засебна апликација иако тесно сарађује са је засебна апликација иако тесно сарађује са Excel -oExcel -oмм..

2.2. Прозор Прозор ProjectProject приказује списак свих отворених радних свезака и приказује списак свих отворених радних свезака и додатних модула. Пронађите радну свеску са којом радите и додатних модула. Пронађите радну свеску са којом радите и одаберите је. одаберите је.

3.3. Одаберите Одаберите Insert Insert Module.⇨ Module.⇨ VBA VBA умеће нов празан модул у радну умеће нов празан модул у радну свеску у приказује га у прозору свеску у приказује га у прозору Code.Code.

VBA VBA модул се приказује у засебном прозору и ради као едитор модул се приказује у засебном прозору и ради као едитор текста. Можете се кретати кроз листове, селектовати текст, копирати, текста. Можете се кретати кроз листове, селектовати текст, копирати, исецати и уметати итд.исецати и уметати итд.

Наредба може да буде произвољне дужине. Уколико желите можете Наредба може да буде произвољне дужине. Уколико желите можете да је преломите у два или више редова. Да бисте то урадили, треба да да је преломите у два или више редова. Да бисте то урадили, треба да употребите знак за размак иза којег следи знак за подвлачење (_).употребите знак за размак иза којег следи знак за подвлачење (_).

У У VBA VBA код можете слободно да умећете коментаре. Знак за код можете слободно да умећете коментаре. Знак за коментар је апостроф (коментар је апостроф (‘)‘). . Занемарује се сваки текст који се налази иза Занемарује се сваки текст који се налази иза апострофа. Коментар може да се нађе у засебнм реду или да следи апострофа. Коментар може да се нађе у засебнм реду или да следи након наредбе.након наредбе.

OOбјектибјекти VBA VBA је објектно оријентисан језик, што значи да ради са објектима. је објектно оријентисан језик, што значи да ради са објектима. Excel Excel садржи преко сто објеката којима можете да управљате. У објекте садржи преко сто објеката којима можете да управљате. У објекте спадају радна свеска, радни лист, нацртана линијаспадају радна свеска, радни лист, нацртана линија, , дијаграм и сл.дијаграм и сл. Објекти су у уређени по хијерархији и могу да садрже друге објекте. Објекти су у уређени по хијерархији и могу да садрже друге објекте. На пример, сам На пример, сам ExcelExcel је објекат који се зове је објекат који се зове ApplicationApplication и он садржи друге и он садржи друге објекте као што су објекти објекте као што су објекти Workbook. Workbook. Објекат Објекат WorkbookWorkbook може да садржи може да садржи друге објекте као што су друге објекте као што су Worksheet и Chart.

Објекат у Објекат у VBAVBA коду референцирате задавањем његовог положаја у коду референцирате задавањем његовог положаја у хијерархији објеката користећи тачку као знак за раздвајање.хијерархији објеката користећи тачку као знак за раздвајање.

Application.Workbooks(Application.Workbooks(“Book1”).“Book1”).Worksheets(Worksheets(“Sheet1”).Range(“A1”)“Sheet1”).Range(“A1”)

Уколико изоставите специфичне референце Excel користи активне објекте. Ако је Book1 активна радна свеска, претходна референца може да се напише и овако:

Worksheets(Worksheets(“Sheet1”).Range(“A1”)“Sheet1”).Range(“A1”)

Слични објекти образују колекцију. На пример, колекција Worksheets састоји се од свих радних листова у одређеној радној свесци. Колекција састоји се од свих радних листова у одређеној радној свесци. Колекција CommandBarsCommandBars састоји се од свих објеката састоји се од свих објеката CommandBarCommandBar (тј. од линија са (тј. од линија са менијима и палета са алаткама).менијима и палета са алаткама).

ПроменљивеПроменљиве KKао и сви програмски језици, и ао и сви програмски језици, и VBAVBA омогућава рад са омогућава рад са променљивама. У језику променљивама. У језику VBAVBA за разлику од неких других језика, не морате за разлику од неких других језика, не морате експлицитно да декларишете променљиве пре него што их употребите у експлицитно да декларишете променљиве пре него што их употребите у коду (иако је то сасвим сигурно добра навика).коду (иако је то сасвим сигурно добра навика). Име променљиве мора почињати алфабетским знаком, не може бити Име променљиве мора почињати алфабетским знаком, не може бити дуже од 255 знакова, не може се користити службена реч језика дуже од 255 знакова, не може се користити службена реч језика VBA VBA и не и не може садржати празно место или неки од знаковаможе садржати празно место или неки од знакова::

. ! # $ % @

Као што вредности променљивих можете да прикажете на одређеним Као што вредности променљивих можете да прикажете на одређеним местима у вашем пројектуместима у вашем пројекту,, исто тако променљивама можете да исто тако променљивама можете да додељујете вредности. Да бисте доделили вредност ћелије додељујете вредности. Да бисте доделили вредност ћелије H11 H11 листа листа Sheet1 Sheet1 променљивој која се зове променљивој која се зове ОсноРастојање, употребите следећу , употребите следећу VBA VBA наредбу:наредбу:

ОсноРастојање= Worksheets(“Sheet1”).Range(“H11”).Value

СвојстваСвојства Објекти имју својства. Својство може да се посматра као Објекти имју својства. Својство може да се посматра као параметар објекта. На пример, објекат скуп ћелија има својства као што параметар објекта. На пример, објекат скуп ћелија има својства као што су су Value(Value(ВредностВредност), Name(), Name(ИмеИме)),, објекат објекат Chart Chart има својства као што су има својства као што су HasTitleHasTitle(има наслов)(има наслов) или или TypeType(врста)(врста).. Својство позивате комбиновањем објекта са његовим својством. Својство позивате комбиновањем објекта са његовим својством. Објекат и својство се раздвајају тачком. на пример, вредност у ћелији Објекат и својство се раздвајају тачком. на пример, вредност у ћелији B15 B15 у листуу листу Sheet1 Sheet1 позивате на следећи начин: позивате на следећи начин:

Worksheets(“Sheet1”).Range(“B15”).Value

МетодеМетоде Објекти имају и методе. Метод је операција која се изводи над Објекти имају и методе. Метод је операција која се изводи над објектом. На пример један од метода за скуп ћелија је објектом. На пример један од метода за скуп ћелија је ClearContents.ClearContents. Тај метод брише садржај скупа ћелија.Тај метод брише садржај скупа ћелија.

Методе задајете комбиновањем објекта са методом. Објекат и Методе задајете комбиновањем објекта са методом. Објекат и метод раздвајају се тачком. На пример, да бисте обрисали садржај метод раздвајају се тачком. На пример, да бисте обрисали садржај ћелија А1:ћелија А1:C12C12 употребите следећу наредбу: употребите следећу наредбу:

Worksheets(“Sheet1”).Range(“А1:C12”).ClearContents

У VBA коду методе изгледају као својства пошто су с објектом повезанe тачком. Ипак методе и својства су потпуно различити појмови.

4. 4. Извршавање процедуре при отварању Извршавање процедуре при отварању радне свескерадне свеске

ЕЕxcel xcel може да аутоматски покрене процедуру када отворите радну може да аутоматски покрене процедуру када отворите радну свеску. Ово је корисно за постављање окружења радне свеске(начин свеску. Ово је корисно за постављање окружења радне свеске(начин израчунавања, постављање сопствених менија и линија алата) или израчунавања, постављање сопствених менија и линија алата) или приказивање оквира за дијалог са опцијама.приказивање оквира за дијалог са опцијама.

Овакву аутоматску процедуру припремићете тако што ћете направити Овакву аутоматску процедуру припремићете тако што ћете направити Sub Sub процедуру, названу процедуру, названу AutoAuto_Open, _Open, у било којем модулу у радној свесци. у било којем модулу у радној свесци. Када ЕКада Еxcel xcel отвара радну свеску и види процедуру отвара радну свеску и види процедуру AutoAuto_Open_Open, аутоматски , аутоматски извршава њен код.извршава њен код.

Следећа Следећа AutoAuto_Open_Open процедура процедура,, при отварању радне свеске при отварању радне свеске,, уклања уклања Standard Toolbar Standard Toolbar и приказује оквир за дијалог за унос улазних података.и приказује оквир за дијалог за унос улазних података.

Sub Auto_Open()

Application.CommandBars(“Standard”).Visible=False

frmUnosPodataka.Show

End Sub

5. 5. Израда кориснички дефинисаних Израда кориснички дефинисаних функција помоћу функција помоћу VBAVBA

Карактеристика функција је да оне враћају резултат. Функције могу изводити операције користећи бројеве, текст, логичке вредности, али не могу да утичу на окружење (не могу да преместе активну ћелију, форматирају опсег или измене постављене параметре радног простора).

Excel садржи стотине уграђених функција, па ипак, може се догодити да желимо да направимо нашу сопствену функцију која ће скратити сложене формуле или урадити нешто што не могу већ уграђене функције.

Функцијске процедуре које пишемо у језику VBA могу се користити у две ситуције:

Као део израза у некој другој процедури

У формулама које правимо у радном листу

Све кориснички дефинисане функције имају исту основну структуру. У примеру који следи приказана је процедура названа Hipotenuza која рачуна дужину хипотенузе правоуглог троугла када се као аргументи користе друге две странице.

Function Hipotenuza(x, z)Function Hipotenuza(x, z)

Hipotenuza Hipotenuza = Sqrt(x ^2 + y ^ 2)= Sqrt(x ^2 + y ^ 2)

End FunctionEnd Function

ИсказИсказ Function Function: : Ова службена реч идентификује процедуру као кориснички Ова службена реч идентификује процедуру као кориснички дефинисану. дефинисану.

Име функцијеИме функције:: Имена морају почињати алфабетским знаком,Имена морају почињати алфабетским знаком, не могу садржавати не могу садржавати размак или тачку.размак или тачку. Име функције мора бити јединствено. Име функције мора бити јединствено.

Аргументи функцијеАргументи функције:: Аргументи представљају једну или више вредности које Аргументи представљају једну или више вредности које функције користе функције користе за своја израчунавања.за своја израчунавања. Аргументи се уносе измећу заграда после Аргументи се уносе измећу заграда после имена функције и раздвајају се заимена функције и раздвајају се зарезимарезима..

VBA VBA исказиискази:Ово је код који, у ствари,:Ово је код који, у ствари, изводи израчунавања.изводи израчунавања. Сваки израз је Сваки израз је комбинација вредности,комбинација вредности, оператора,оператора, променљивих и функција језика променљивих и функција језика VBA VBA илиили Excel Excel-а -а које производе резултат.које производе резултат.

End FunctionEnd Function : : Ове службене речиОве службене речи означавају крај функцијске процедуре.означавају крај функцијске процедуре.

II II час час –– 1.Израда сопственог оквира за 1.Израда сопственог оквира за дијалогдијалог

Наменски оквир за дијалог прави се у обрасцу Наменски оквир за дијалог прави се у обрасцу User Form User Form VisualVisual BasicBasic EditorEditorа. Следе општи кораци који су обично потребни да би се а. Следе општи кораци који су обично потребни да би се направио оквир за дијалог:направио оквир за дијалог:

1. Притисните 1. Притисните Alt + F11Alt + F11 да бисте активирали прозор да бисте активирали прозор VisualVisual Basic Editor.Basic Editor.

2. Изаберите 2. Изаберите Insert UserForm Insert UserForm на главном менију. Приказаће се празан на главном менију. Приказаће се празан образац као на слици. Када активирате образац, појавиће се кутија са образац као на слици. Када активирате образац, појавиће се кутија са алаткама која се користи за додавање контрола у оквир за дијалог.алаткама која се користи за додавање контрола у оквир за дијалог.

Празан Празан образацобразац

CommandButtonCommandButton Додаје командно дугмеДодаје командно дугме

Tabstrip Tabstrip Додаје траку са језичцимаДодаје траку са језичцима

MultiPageMultiPage Додаје контролу за више страна Додаје контролу за више страна

ScrollBar ScrollBar Додаје траку за померањеДодаје траку за померање

SpinButton SpinButton Додаје дугме за бројање Додаје дугме за бројање

Image Image Д Дooдаје контролу која може да садржи сликудаје контролу која може да садржи слику

RefEdit RefEdit Омогућава кориснику да изабере скуп ћелија Омогућава кориснику да изабере скуп ћелија

Контрола ОписКонтрола Опис

Select Objects Select Objects Омогућава бирање других контролаОмогућава бирање других контрола

Label Label Додаје натписДодаје натпис

TextBox TextBox Додаје оквир за текстДодаје оквир за текст

ComboBox ComboBox Додаје комбиновану листуДодаје комбиновану листу

ListBox ListBox Додаје листуДодаје листу

CheckBox CheckBox Додаје поље за потврдуДодаје поље за потврду

OptionButton OptionButton Додаје дугме за опцијуДодаје дугме за опцију

ToggleButton ToggleButton Додаје дугме за укључивање/искључивањеДодаје дугме за укључивање/искључивање

Frame Frame Додаје оквир Додаје оквир

Табела1 Табела1 - - Списак контрола кутије са алаткама са кратким описом Списак контрола кутије са алаткама са кратким описом

33.. Додајте одговарајуће контроле у оквир за дијалог. Додајте одговарајуће контроле у оквир за дијалог.

Када показивач миша поставите на контролу у кутији са Када показивач миша поставите на контролу у кутији са алаткама, приказује се име те контроле. алаткама, приказује се име те контроле. Додавање контрола вршите тако што притиснете контролу и Додавање контрола вршите тако што притиснете контролу и превучете је на образац. Након додавања контоле, можете да је превучете је на образац. Након додавања контоле, можете да је померате и да јој мењате величину. померате и да јој мењате величину. Уколико образац није довољно велики, можемо да му променимо Уколико образац није довољно велики, можемо да му променимо величину помоћу ручица које ће се појавити када кликнемо на њега. величину помоћу ручица које ће се појавити када кликнемо на њега.

Да бисте приказали прозор Да бисте приказали прозор PropertiesProperties, , одаберите одаберите View View ⇨⇨ Properties Window ( Properties Window (или или притисните тастерпритисните тастер F4). F4).

Мењање својства контроле врши се тако што га Мењање својства контроле врши се тако што га најпре изаберемо у прозору најпре изаберемо у прозору PropertiesProperties, а затим , а затим унесемо нову вредност. унесемо нову вредност.

Осим подешавања својстава током Осим подешавања својстава током пројектовања (пројектовања (engl.design time), engl.design time), она се могу мењати она се могу мењати и током извршавања (и током извршавања (engl. run time).engl. run time).

Да бисте упознали одређено својствоДа бисте упознали одређено својство контроле, контроле, изаберите га у прозору изаберите га у прозору PropertiesProperties и притисните и притисните F1. F1. Појавиће се Појавиће се Help Help прозор са детаљним описом.прозор са детаљним описом.

Свака контрола коју додајете у образац Свака контрола коју додајете у образац UserFormUserForm има неколико својстава које одређују њен има неколико својстава које одређују њен изглед и понашање. Нека од тих својстава можете изглед и понашање. Нека од тих својстава можете да промените притискањем и повлачењем ивице да промените притискањем и повлачењем ивице контроле. За промену осталих својстава, користите контроле. За промену осталих својстава, користите прозор прозор Properties.Properties.

Обрада догађајаОбрада догађаја

Образац Образац UserFormUserForm може да садржи и потпрограме за обраду може да садржи и потпрограме за обраду догађаја. Догађај је нешто што се дешава када корисник рукује догађаја. Догађај је нешто што се дешава када корисник рукује контролом. На пример, притискање дугмета је догађај. Бирање ставке у контролом. На пример, притискање дугмета је догађај. Бирање ставке у листи је догађај. Да би оквир за дијалог био користан, морате да листи је догађај. Да би оквир за дијалог био користан, морате да напишете напишете VBA VBA код који ће нешто урадити када се догађај деси.код који ће нешто урадити када се догађај деси.

Sub cmdIzlaz_Click()Sub cmdIzlaz_Click()

Unload UnosPodatakaUnload UnosPodataka

End SubEnd Sub

Имена Имена потпрограма за обраду догађаја састоје се од имена потпрограма за обраду догађаја састоје се од имена контроле и имена догађаја повезаних доњом цртом (_). На пример, контроле и имена догађаја повезаних доњом цртом (_). На пример, потпрограм који се извршава када корисник притисне дугме потпрограм који се извршава када корисник притисне дугме CommandButton1 CommandButton1 има назив има назив CommandButton1_Click.CommandButton1_Click.

За приказивање наменског оквира за дијалог већ смо написали код За приказивање наменског оквира за дијалог већ смо написали код у одељку о извршавању процедуре при отварању радне свеске. у одељку о извршавању процедуре при отварању радне свеске. Међутим, и за уклањање наменског оквира за дијалог морате да Међутим, и за уклањање наменског оквира за дијалог морате да напишете потпрограм. За ту сврху се користи метод напишете потпрограм. За ту сврху се користи метод Unload Unload објекта објекта UserForm. UserForm. Следећи потпрограм уклања оквир за дијалог Следећи потпрограм уклања оквир за дијалог UnosPodataka:UnosPodataka:

2. Вежба - Израда маске за унос 2. Вежба - Израда маске за унос податакаподатака

Направићемо оквир за дијалог прилагођен тако да корисник који не Направићемо оквир за дијалог прилагођен тако да корисник који не мора да буде добар познавалац програма мора да буде добар познавалац програма MSMS Excel Excel може комфорно да може комфорно да унесе улазне податке за прорачун редуктора са цилиндричним унесе улазне податке за прорачун редуктора са цилиндричним зупчаницима и притиском на дугме зупчаницима и притиском на дугме ““Унос податакаУнос података”” да их пребаци у да их пребаци у одговарајуће ћелије радног листаодговарајуће ћелије радног листа.. Поред неколико лабела које треба да назначе одређене величине и Поред неколико лабела које треба да назначе одређене величине и јединице у којима се оне изражавају и чија је функција јасна са слике, на јединице у којима се оне изражавају и чија је функција јасна са слике, на образац ће бити додато:образац ће бити додато: - 4 Т- 4 ТextBoxextBox контроле контроле у које ће корисник сам уписаивати вредности , у које ће корисник сам уписаивати вредности , - 2 - 2 ComboBox ComboBox контроле за избор вредности са листе , контроле за избор вредности са листе , - 1 - 1 SpinButtonSpinButton помоћу кога ће корисник помоћу миша моћи да подеси помоћу кога ће корисник помоћу миша моћи да подеси вредноствредност - 2 - 2 CommandButon CommandButon контроле, једна за пребацивање података и контроле, једна за пребацивање података и друга за излаз.друга за излаз. - 1 - 1 Image Image контрола помоћу које ће бити приказан детаљ модела контрола помоћу које ће бити приказан детаљ модела редуктора. редуктора.

Отворите нов оквир за дијалог и додајте одговарајуће Отворите нов оквир за дијалог и додајте одговарајуће контроле као што је приказано на доњој слициконтроле као што је приказано на доњој слици

Контроле које нису назначене су лабеле.Контроле које нису назначене су лабеле.

TextBox1Image1

CommandButton1

CommandButton2

TextBox2

Tex

tBo

x3

CombotBox1

Label1

Label4

Label5

Label6

Label7

Label2

Label3

SpinButton1

Combobox2

Tex

tBo

x4

Подешавање својстава оквира за дијалогПодешавање својстава оквира за дијалог

Притисните Притисните F4 F4 да би се појавио прозор да би се појавио прозор PropertiesProperties, , a a затим затим промените следећа својства објекта промените следећа својства објекта UserForm:UserForm:

Својство Промените у Својство Промените у

Name frmName frmUnosPodatakaUnosPodataka

CaptionCaption - -

Height 340Height 340

Width 520Width 520Подешавање својстава контролаПодешавање својстава контрола

Натписе на контролама Натписе на контролама CommandButon1 (CommandButon1 (Унос података) и Унос података) и CommandButton2 (CommandButton2 (Излаз) као и за лабеле унећете у својство Излаз) као и за лабеле унећете у својство Caption Caption за ове контроле у прозору за ове контроле у прозору Properties.Properties.

За контролу За контролу SpinButton1 SpinButton1 подесићемо својство подесићемо својство MaxMax на 200, а на 200, а својство својство Min Min на 14 обзиром да је минималан број зубаца зупчаника 14. на 14 обзиром да је минималан број зубаца зупчаника 14.

За контролу За контролу Image1, Image1, својство својство Picture Picture подесићемо тако што подесићемо тако што ћемо дефинисати путању до слике која ће бити приказана овом ћемо дефинисати путању до слике која ће бити приказана овом контролом. контролом.

Својства лабела које нису назначене на слици подешавају се Својства лабела које нису назначене на слици подешавају се исто као код исто као код Label2.Label2.

Контрола Контрола Font Font styleFont Font style Size Size SpecialEffectSpecialEffect

Label1 Label1 Tahoma Bold 18 Tahoma Bold 18 fmSpecialEffectBump fmSpecialEffectBump

Label2 Label2 -7 -7 TahomaTahoma Bold 1Bold 122 fmSpecialEffectBump fmSpecialEffectBump

TextBox1TextBox1-4 -4 Tahoma Tahoma Bold 1Bold 122 fmSpecialEffectBump fmSpecialEffectBump

CommandButton1-2 Tahoma CommandButton1-2 Tahoma Bold 1Bold 122 - -

ComboBox1-2 Tahoma ComboBox1-2 Tahoma Bold 1Bold 122 fmSpecialEffectBump fmSpecialEffectBump

Подесите својства следећих контрола према приказаној Подесите својства следећих контрола према приказаној табели:табели:

Тестирање оквира за дијалогТестирање оквира за дијалог

Уколико желимо да нам се оквир за дијалог прикаже Уколико желимо да нам се оквир за дијалог прикаже увек када покренемо радну свеску са прорачуном увек када покренемо радну свеску са прорачуном написаћемо макро написаћемо макро Auto_Open:Auto_Open:

1.1. Уметните модул бирањем Уметните модул бирањем Insert Insert ⇨⇨ Module Module

2.2. У празан модул упишите следећи код:У празан модул упишите следећи код:

Sub Sub Auto Auto_Open()_Open()

frmUnosPodataka.ShowfrmUnosPodataka.Show

End SubEnd Sub

3.3. Покрените Покрените Excel. Excel. Уколико сте све урадили како треба Уколико сте све урадили како треба заједно са заједно са ExcelExcel – ом покренуће се и образац за унос – ом покренуће се и образац за унос података.података.

4.4. Оквир за дијалог затворите притискањем дугмета на Оквир за дијалог затворите притискањем дугмета на насловној линији.насловној линији.

Прављење потпрограма за затварање оквира за дијалог (дугме Прављење потпрограма за затварање оквира за дијалог (дугме Излаз)Излаз)

1.1. Отворите Отворите Visual Basic Editor. Visual Basic Editor.

2.2. Кликните дуплим кликом на Кликните дуплим кликом на CommandButton2CommandButton2 на обрасцу. Отвориће се на обрасцу. Отвориће се прозор за писање кода са уметнутом првом и задњом линијом кода:прозор за писање кода са уметнутом првом и задњом линијом кода:

Private Sub CommandButton1_Click()Private Sub CommandButton1_Click()

End SubEnd Sub

3.3. У празан простор између редова упишите следећи код:У празан простор између редова упишите следећи код:

Unload frmUnosPodatakaUnload frmUnosPodataka

Ова наредба ће искључити образац увек када кликнемо на дугме Ова наредба ће искључити образац увек када кликнемо на дугме Излаз. Излаз.

Догађај при коме ће ови елементи бити додати је: Догађај при коме ће ови елементи бити додати је: UserForm_Initialize()UserForm_Initialize()..

У прозор за писање кода ући ћемо из У прозор за писање кода ући ћемо из VBA VBA ако изаберемо ако изаберемо View View ⇨⇨ Code Code или притиском на тастер или притиском на тастер F7F7..

Следећи код додаје вредности за бројеве обртаја и ознаке за челике у Следећи код додаје вредности за бројеве обртаја и ознаке за челике у падајуће листе падајуће листе ComboBox1 ComboBox1 и и ComboBox2ComboBox2..

Private Sub UserForm_Initialize()Private Sub UserForm_Initialize()

ComboBox1.AddItem " 960"ComboBox1.AddItem " 960"

ComboBox1.AddItem " 980"ComboBox1.AddItem " 980"

ComboBox1.AddItem "ComboBox1.AddItem " 1600"1600"

ComboBox2.AddItem " 0545"ComboBox2.AddItem " 0545"

ComboBox2.AddItem " 1530"ComboBox2.AddItem " 1530"

End SubEnd Sub

Код за додавање елеманата листе Код за додавање елеманата листе ComboBox1ComboBox1 ии Combo Box2 Combo Box2

Private Sub SpinButton1_Change()Private Sub SpinButton1_Change()

TextBox5.Value = SpinButton1.ValueTextBox5.Value = SpinButton1.Value

End SubEnd Sub

Код за преношење вредности са дугмета за бројање у Код за преношење вредности са дугмета за бројање у TextBoxTextBox55 који приказује број зубаца мањег зупчаника.који приказује број зубаца мањег зупчаника.

Private Sub ComboBox2_Change()Private Sub ComboBox2_Change()

Label10.Visible = TrueLabel10.Visible = True

End SubEnd Sub

Код који приказује лабелу са ознаком Код који приказује лабелу са ознаком ČČ. . увек када се изабере увек када се изабере нека вредност у листи за избор челика нека вредност у листи за избор челика

Private Sub CommandButton2_Click()Private Sub CommandButton2_Click()

Range("F1") = TextBox1Range("F1") = TextBox1

Range("F2") = ComboBox1Range("F2") = ComboBox1

Range("F3") = TextBox2Range("F3") = TextBox2

Range("F4") = TextBox4Range("F4") = TextBox4

Range("F5") = TextBox5Range("F5") = TextBox5

Range("F6") = ComboBox2Range("F6") = ComboBox2

End SubEnd Sub

Код који вредности из маске за унос података пребацује Код који вредности из маске за унос података пребацује у одговарајуће ћелије радног листау одговарајуће ћелије радног листа

Задаци за вежбу:Задаци за вежбу:

1.1. Направити оквир за дијалог који ће приказивати податке Направити оквир за дијалог који ће приказивати податке добијене након извршеног прорачуна у добијене након извршеног прорачуна у Excel – Excel – овим радним овим радним листовима.листовима.

2.2. Написати и тестирати кориснички дефинисану функцју Написати и тестирати кориснички дефинисану функцју inv inv a a која се користи за дефинисање профила зубаца зупчаника. која се користи за дефинисање профила зубаца зупчаника.

inv inv aa= = tg tg aa - - aa