Ako kopírovať riadok v Excel VBA

Použitie programu VBA na programovanie programu Excel nie je také populárne, ako tomu bolo v minulosti. Stále však existuje veľa programátorov, ktorí dávajú prednosť pri práci s programom Excel. Ak ste jedným z týchto ľudí, tento článok je určený pre vás.

Kopírovanie riadku v Exceli VBA je vec, pre ktorú je aplikácia Excel VBA skutočne užitočná. Môžete mať napríklad jeden súbor všetkých vašich potvrdení s dátumom, účtom, kategóriou, poskytovateľom, produkt / služba a náklady vstúpili do jedného riadku naraz, ako sa vyskytujú - skôr vývoj účtovníctva než statické účtovníctvo. Ak to chcete urobiť, musíte mať možnosť skopírovať riadok z jedného pracovného listu na druhý.

Vzorový program Excel VBA, ktorý skopíruje riadok z jedného pracovného hárka do druhého - na zjednodušenie použitia iba troch stĺpcov - obsahuje:

  • Alfa stĺpec pre text
  • Číselný stĺpec - na cieľovom pracovnom hárku sa vytvorí automatický súčet
  • Stĺpec s dátumom - aktuálny dátum a čas sa vyplní automaticky

Úvahy o písaní kódu Excel VBA

instagram viewer

Ak chcete spustiť udalosť, ktorá kopíruje riadok, choďte so štandardným ovládaním pomocou tlačidla. V programe Excel kliknite na Vložiť na karte Vývojár. Potom vyberte ovládací prvok formulára tlačidla a nakreslite tlačidlo tam, kde chcete. Excel automaticky zobrazí dialógové okno, aby vám dal možnosť vybrať si makro vyvolané udalosťou kliknutia na tlačidlo alebo vytvorením novej.

Existuje niekoľko spôsobov, ako nájsť posledný riadok v cieľovom pracovnom hárku, aby program mohol skopírovať riadok v dolnej časti. Tento príklad sa rozhodol zachovať číslo posledného riadku v pracovnom hárku. Ak chcete zachovať číslo posledného riadku, musíte toto číslo niekde uložiť. Môže to byť problém, pretože používateľ môže číslo zmeniť alebo odstrániť. Aby ste to obišli, vložte ju do bunky priamo pod tlačidlom formulára. Týmto spôsobom je to pre užívateľa neprístupné. (Najjednoduchšie je zadať hodnotu do bunky a potom na ňu presunúť tlačidlo.)

Kód na kopírovanie riadku pomocou programu Excel VBA

Sub Add_The_Line () Dim currentRow As Integer Sheets ("Sheet1"). Vyberte currentRow = Range ("C2"). Riadky hodnôt (7) .Vyberte výber. Kopírovať listy ("List2"). Vyberte riadky (currentRow) .Vyberte ActiveSheet. Prilepiť dim dátum ako dátum theDate = now () Cells (currentRow, 4) .Value = CStr (theDate) Cells (currentRow + 1, 3) .Activate Dim rTotalCell As Set Range rTotalCell = _ Sheets ("Sheet2"). riadkov. Počet, „C“). Koniec (xlUp) .Offset (1, 0) rTotalCell = WorksheetFunction. Súčet _ (rozsah ("C7", rTotalCell. Offset (-1, 0))) Listy ("List1"). Rozsah ("C2"). Hodnota = currentRow + 1 End Sub 

Tento kód používa xlUp, „magické číslo“ alebo technicky vymenovanú konštantu, ktorá je rozpoznaná metódou End. Offset (1,0) sa jednoducho posunie o jeden riadok v tom istom stĺpci nahor, takže čistým efektom je výber poslednej bunky v stĺpci C.

Slovami sa vo vyhlásení hovorí:

  • Prejdite na poslednú bunku v stĺpci C (zodpovedá End + šípka dole).
  • Potom sa vráťte späť k poslednej nepoužitej bunke (zodpovedá šípke End + Up).
  • Potom choďte o jednu bunku vyššie.

Posledný príkaz aktualizuje umiestnenie posledného riadku.

VBA je pravdepodobne ťažšia ako VB.NET, pretože musíte poznať objekty VB aj Excel VBA. Použitie xlUP je dobrým príkladom druhu špecializovaných vedomostí, ktoré sú rozhodujúce pre schopnosť písať makrá VBA bez toho, aby ste hľadali tri rôzne veci pre každé vyhlásenie, ktoré kódujete. Spoločnosť Microsoft urobila veľký pokrok v inovácii editora Visual Studio, ktorý vám pomôže zistiť správnu syntax, ale editor VBA sa príliš nezmenil.