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