Тхе Образац за резервацију курса је једноставан облик који илуструје принципе дизајна УсерФорма и повезано ВБА кодирање.
Користи избор контрола, укључујући оквире за текст, комбиноване оквире, дугмад опција груписане у оквир, поља за потврду и командна дугмад.
Када корисник притисне дугме ОК, њихов унос се уноси у следећи расположиви ред на радном листу.
Опис екцел обрасца:
Постоје два једноставна оквира за текст (Име: и Телефон:) у које корисник може да унесе слободан текст и два комбинована оквира (Одељење и Курс) који омогућавају кориснику да одабере ставку са листе.
Постоје три дугмета за опције (Увод, Средњи и Адванцед) груписани у оквир (Ниво) тако да корисник може изабрати само једну од опција.
Постоје два поља за потврду (Ручак обавезан и Вегетаријанска) да, пошто нису груписане у оквиру, обоје се могу изабрати ако је потребно. Међутим, ако особа која врши резервацију не жели ручак, не морамо знати да ли су вегетаријанци или не. Дакле, Вегетаријанска поље за потврду је засивљено све док није потребно.
Постоје три командна дугмета (У реду, Поништити, отказати и Цлеар Форм) од којих свака врши клик унапред на унапред дефинисану функцију.
Подешавања својстава контроле:
Контрола | Тип | Својство | Подешавање |
УсерФорм | УсерФорм | Име | фрмЦоурсеБоокинг |
Наслов | Образац за резервацију курса | ||
Име | Поље за текст | Име | тктНаме |
Телефон | Поље за текст | Име | тктПхоне |
Одељење | Цомбо Бок | Име | цбоДепартмент |
Курс | Цомбо Бок | Име | цбоЦоурсе |
Ниво | Рам | Име | фраЛевел |
Наслов | Ниво | ||
Увод | Дугме опција | Име | оптИнтродуцтион |
Средњи | Дугме опција | Име | оптИнтермедиате |
Адванцед | Дугме опција | Име | оптАдванцед |
Ручак обавезан | Поље за потврду | Име | цхкЛунцх |
Вегетаријанска | Поље за потврду | Име | цхкВегетариан |
Омогућено | Нетачно | ||
У реду | Командно дугме | Име | цмдОк |
Наслов | У реду | ||
Уобичајено | Истина | ||
Поништити, отказати | Командно дугме | Име | цмдЦанцел |
Наслов | Поништити, отказати | ||
Поништити, отказати | Истина | ||
Цлеар Форм | Командно дугме | Име | цмдЦлеарФорм |
Креирање образаца у програму Екцел
Ако желите сами да направите образац, једноставно копирајте изглед приказан на горњој илустрацији. Пратите доле наведене кораке:
1. Отворите радну свеску у коју желите да образац припада (Кориснички обрасци попут макроа морају бити придружени радној свесци) и пређите на уређивач Висуал Басиц.
2. У уређивачу програма Висуал Басиц кликните на Уметните УсерФорм дугме (или идите на Уметни> Кориснички образац).
3. Ако се оквир са алаткама не појави сам (прво кликните на образац да бисте се уверили да се не крије) кликните на Тоолбок дугме (или идите на Поглед> Оквир са алаткама).
4. Да бисте поставили контролу на образац, кликните на одговарајуће дугме у оквиру са алаткама, а затим кликните на образац. Контроле се могу померати повлачењем за ивице или променити величину повлачењем дугмади по ободу.
5. Да бисте уредили својства контроле, уверите се да је изабрана контрола изабрана, а затим унесите одговарајуће промене у Некретнине прозор. Ако не видите прозор са својствима, идите на Поглед> Прозор својстава.
6. Да бисте уклонили контролу из обрасца, изаберите је и кликните на Избриши тастер на тастатури.
УсерФорм неће учинити ништа док се не створи код који покреће образац и његове различите контроле. Следећи корак је писање кода који покреће сам образац.
Додавање кода: 1 Иницијализација обрасца
Иницијализација обрасца:
Већини образаца је потребна нека врста подешавања при отварању. Ово може бити постављање подразумеваних вредности, проверавање да ли је поље празно или састављање листа комбинованих оквира. Овај процес се назива Иницијализација обрасца и за то се брине макро који се зове УсерФорм_Инитиализе (у случају да сте збуњени мојим различитим писањем речи "инитиалис (з) е", то је зато што говорим енглески, а ВБА говори амерички - али не брините, ВБА ће напиши то уместо тебе!). Ево како да направите код за иницијализацију обрасца за резервацију курса:
1. Да бисте видели прозор кода обрасца, идите на Поглед> Код или кликните Ф7.
2. Када се кодни прозор први пут отвори, он садржи празно УсерФорм_Цлицк () процедура. За избор изаберите падајуће листе при врху прозора кода УсерФорм и Иницијализујте. Ово ће створити процедуру која вам је потребна. Сада можете избрисати процедуру УсерФорм_Цлицк ().
3. Унесите следећи код у процедуру:
Привате Суб УсерФорм_Инитиализе () тктНаме.Валуе = "" тктПхоне.Валуе = "" Са цбоДепартмент .АддИтем "Салес" .АддИтем "Маркетинг" .АддИтем "Администратион" .АддИтем "Десигн" .АддИтем "Адвертисинг" .АддИтем "Диспатцх". АддИтем "Транспортатион" Енд Витх цбоДепартмент.Валуе = "" Витх цбоЦоурсе .АддИтем "Аццесс" .АддИтем "Екцел" .АддИтем "ПоверПоинт" .АддИтем "Ворд" .АддИтем "ФронтПаге" Енд витх цбоЦоурсе.Валуе = "" оптИнтродуцтион = Труе цхкЛунцх = Нетачно цхкВегетариан = Нетачно тктНаме.СетФоцус Енд Суб
Како функционише иницијализацијски код:
Сврха процедуре УсерФорм_Инитиализе () је да припреми кориснички образац у ВБА за употребу, постављајући подразумеване вредности за различите контроле и стварајући листе које ће приказати комбиновани оквири.
Ови редови постављају садржај два текстуална поља на празно:
тктНаме.Валуе = "" тктПхоне.Валуе = ""
Следе упутства за комбиноване оквире. Прво се наводи садржај листе, затим се почетна вредност комбинованог оквира поставља на празно.
Са цбоДепартмент .АддИтем "Продаја" .АддИтем "Маркетинг" (колико год је потребно …) Заврши са
цбоДепартмент.Валуе = ""
Ако је потребно, почетни избор се може направити из групе опција, у овом случају:
оптИнтродуцтион = Тачно
Оба поља за потврду су постављена на Нетачно (тј. Без квачице). Подесите на Тачно ако желите да поље за потврду изгледа већ означено:
цхкЛунцх = Нетачно
цхкВегетариан = Нетачно
Коначно, фокус се пребацује на прво поље за текст. Ово поставља кориснике курсор у оквир за текст тако да не морају да кликну на оквир пре него што почну да куцају:
тктНаме.СетФоцус
Додавање кода: 2 Омогућавање рада дугмади
На обрасцу постоје три командна дугмета и свако мора бити покренуто својом процедуром. Почевши од једноставних…
Кодирање дугмета за отказивање:
Раније смо користили прозор својстава да бисмо подесили Поништити, отказати својство дугмета Откажи да бисте Истина. Када поставите својство Откажи командног дугмета на Тачно, то има ефекат "кликања" на то дугме када корисник притисне тастер изаћи тастер на њиховој тастатури. Али само ово неће узроковати да се било шта деси са формом. Морате да креирате код за догађај клика дугмета који ће у овом случају затворити образац. Ево како:
1. Када је УсерФорм отворен за уређивање у Висуал Басиц Едитор-у, двапут кликните на дугме Цанцел. Прозор кода обрасца отвара се са цмдЦанцел_Цлицк () поступак спреман за уређивање.
2. Код за затварање обрасца је врло једноставан. Додајте ред кода у процедуру тако да изгледа овако:
Привате Суб цмдЦанцел_Цлицк () Унлоад Ме Енд Суб
Кодирање дугмета за брисање обрасца:
Додао сам дугме за брисање обрасца у случају да се корисник жели предомислити и ресетовати све, и олакшати ако има више резервација одједном. Све што треба да урадите је да поново покренете поступак Инитиалисе. Макроу се може рећи да покрене други макро (или низ макроа ако је потребно) помоћу Цалл кључна реч:
1. Двапут кликните на дугме Обриши образац. Прозор кода обрасца отвара се са цмдЦлеарФорм_Цлицк () поступак спреман за уређивање.
2. Додајте ред кода у процедуру тако да изгледа овако:
Привате Суб цмдЦлеарФорм_Цлицк () Позовите УсерФорм_Инитиализе Енд Суб
Кодирање дугмета ОК:
Ово је део кода који мора обавити посао преношења корисникових избора и уноса текста на радни лист. Када смо својство Цанцел дугмета Цанцел поставили на Труе, поставили смо и дугмад ОК Уобичајено имовина да Истина. Ово мора бити кликом на дугме У реду када корисник притисне тастер Ентер (или Повратак) на тастатури (под условом да нису користили своју Таб тастер за прелазак на друго дугме). Ево кода како би дугме функционисало:
1. Двапут кликните на дугме ОК. Прозор кода обрасца отвара се са цмдОК_Цлицк () поступак спреман за уређивање.
2. Измените процедуру да бисте додали следећи код:
Привате Суб цмдОК_Цлицк () АцтивеВоркбоок.Схеетс ("Резервације курсева"). Активирајте опсег ("А1"). Изаберите Уради ако је ИсЕмпти (АцтивеЦелл) = ФалсеТхен АцтивеЦелл.Оффсет (1, 0). Одаберите Енд Иф Лооп унтил ИсЕмпти (АцтивеЦелл) = Тачно АцтивеЦелл.Оффсет (0, 4) .Валуе = "Интро" ЕлсеИф оптИнтермедиате = Труе тхен АцтивеЦелл.Оффсет (0, 4) .Валуе = "Интермед" Елсе АцтивеЦелл.Оффсет (0, 4) .Валуе = "Адв" Енд Иф Иф цхкЛунцх = Труе тхен АцтивеЦелл.Оффсет (0, 5) .Валуе = "Иес" Елсе АцтивеЦелл.Оффсет (0, 5) .Валуе = "Но" Енд Иф Иф цхкВегетариан = Труе тхен АцтивеЦелл.Оффсет (0, 6). Валуе = "Иес" Елсе Иф цхкЛунцх = Фалсе тхен АцтивеЦелл.Оффсет (0, 6) .Валуе = "" Елсе АцтивеЦелл.Оффсет (0, 6) .Валуе = "Но" Енд Иф Енд Иф Ранге ("А1"). Изаберите Енд Суб
Како функционише код ЦмдОК_Цлицк:
Прва два реда уверите се да је исправна радна свеска активна и премешта избор у ћелију А1:
АцтивеВоркбоок.Схеетс ("Резервације курсева"). Активирајте опсег ("А1"). Изаберите Следећих неколико редова помера селекцију низ радни лист све док не пронађе празну ћелију: Урадити Ако је ИсЕмпти (АцтивеЦелл) = Фалсе Затим АцтивеЦелл.Оффсет (1 , 0) .Одаберите Енд Иф Лооп унтил ИсЕмпти (АцтивеЦелл) = Труе
Следећа четири реда почињу да уписују садржај обрасца на радни лист, користећи активну ћелију (која се налази у колони А) као референцу и премештајући уз ред ћелија по ћелија:
АцтивеЦелл.Валуе = тктНаме.Валуе АцтивеЦелл.Оффсет (0, 1) = тктПхоне.Валуе АцтивеЦелл.Оффсет (0, 2) = цбоДепартмент.Валуе АцтивеЦелл.Оффсет (0, 3) = цбоЦоурсе.Валуе
Сада долазимо до дугмади за опције. Они су постављени у оквир обрасца тако да корисник може изабрати само један. Наредба ИФ се користи за упућивање Екцел -а за сваку опцију:
Ако је оптИнтродуцтион = Труе Онда АцтивеЦелл.Оффсет (0, 4) .Валуе = "Интро" ЕлсеИф оптИнтермедиате = Труе Онда АцтивеЦелл.Оффсет (0, 4) .Валуе = "Интермед" Елсе АцтивеЦелл.Оффсет (0, 4) .Валуе = "Адв" Крај Ако
ВБА ИФ наредбама је много лакше управљати него Екцел -овом ИФ функцијом. Можете имати колико год желите опција, само уметните додатну Остало за сваку од њих. Да постоје само две опције, не би вам биле потребне Остало, само Ако и Иначе би било довољно (не заборавите - свима им је потребан Крај Ако).
За свако поље за потврду постоји још једна наредба ИФ. За поље за потврду Лунцх Рекуиред, квачица у пољу означава "Да", особи је потребан ручак, а ниједан квачица не значи "Не".
Ако је цхкЛунцх = Труе, онда АцтивеЦелл.Оффсет (0, 5) .Валуе = "Да" У супротном АцтивеЦелл.Оффсет (0, 5) .Валуе = "Не" Прекини ако
Могли бисмо користити сличну ИФ изјаву за поље за потврду Вегетариан, али ако особи није потребан ручак, није важно да ли је вегетаријанка или не. У сваком случају, било би погрешно претпоставити да нису вегетаријанци једноставно зато што им није био потребан ручак. ИФ израз стога садржи другу, угнежђену иф наредбу:
Иф цхкВегетариан = Труе тхен АцтивеЦелл.Оффсет (0, 6) .Валуе = "Иес" Елсе Иф цхкЛунцх = Фалсе тхен АцтивеЦелл.Оффсет (0, 6) .Валуе = "" Елсе АцтивеЦелл.Оффсет (0, 6) .Валуе = "Не" Крај Ако је крај Ако
Квачица у пољу значи "Да", особа је вегетаријанка. Ако у пољу нема квачице, угнежђени израз ИФ гледа поље за потврду Лунцх Рекуиред. Ако поље за потврду Лунцх Рекуиред (Обавезан ручак) садржи квачицу, ниједан квачица у пољу за потврду Вегетариан не значи да особа није вегетаријанка па убацује „Не“ у ћелију. Међутим, ако поље за потврду Лунцх Рекуиред не садржи квачицу, онда не знамо да ли је особа вегетаријанка (то ионако није важно), па ћелија остаје празна ("").
Коначно, избор се враћа на почетак радног листа, спреман за следећи унос:
Распон ("А1"). Изаберите
Додавање кода 3: Манипулација обрасцем
Коначно, пример како се контролама на обрасцу може манипулисати док је у употреби. Када су контролна својства подешена, Омогућено Својство поља за потврду Вегетариан је постављено на Нетачно. Када контрола није омогућена, корисника не може унијети вриједност у њега, иако може садржати вриједност која је већ била тамо, а ВБА може додати, уклонити или промијенити вриједност.
Не морамо да знамо да ли је особа вегетаријанка (чак и ако јесте!) Ако не наручује ручак. Дакле, поље за потврду Вегетариан (Вегетаријанско) остаје онемогућено осим ако се потврдни оквир Лунцх Рекуиред (Обавезно за ручак) не постави. Тада корисник може означити поље за потврду Вегетариан ако жели. Ако означе ово поље, знаћемо да су одговорили са "да", а ако не, знамо да су одговорили са "не".
Можемо да пребацимо Омогућено имовина из Нетачно до Истина тако што ћете имати процедуру која се аутоматски покреће кад год се промени вредност поља за потврду Лунцх Рекуиред. Срећом, више контрола има Цханге поступак и овај који овде користимо је цхкЛунцх_Цханге (). Ово ћемо користити за омогућавање Вегетариан цхецк бок -а када је потврђен избор у пољу за потврду Лунцх Рекуиред и онемогућимо га када поље за потврду Лунцх Рекуиред није означено.
Постоји само још једна ствар коју морамо да урадимо. Претпоставимо да је неко означио поље за потврду Лунцх Рекуиред, а такође је означио поље за потврду Вегетариан. Затим су се предомислили и уклонили ознаку из поља за потврду Лунцх Рекуиред. Поље за потврду Вегетариан би било онемогућено, али ће квачица која је раније постављена остати.
Додатни ред кода може осигурати да је квачица уклоњена када је оквир онемогућен. Ево целе ствари:
Привате суб цхкЛунцх_Цханге () Иф цхкЛунцх = Труе тхен цхкВегетариан.Енаблед = Труе Елсе цхкВегетариан.Енаблед = Фалсе цхкВегетариан = Фалсе Енд Иф Енд Суб
Отварање обрасца
Образац је сада спреман за употребу, па га је потребно отворити једноставним макроом. То се може причврстити на прилагођено дугме на траци са алаткама, командно дугме нацртано на радном листу или било коју графику (кликните десним тастером миша на графику и изаберите Додели макро). Ако је потребно, креирајте нови модул за радну свеску и додајте ову процедуру:
Суб ОпенЦоурсеБоокингФорм () фрмЦоурсеБоокинг.Схов Енд Суб
Ако вам се допадају наши блогови, поделите их са пријатељима на Фацебооку. Такође нас можете пратити на Твиттер -у и Фацебоок -у.
Волели бисмо да чујемо од вас, реците нам како можемо побољшати, допунити или иновирати наш рад и учинити га бољим за вас. Пишите нам на веб локацији е -поште