Jak zkopírovat řádek v aplikaci Excel VBA

Použití programu VBA k programování aplikace Excel není tak populární, jak tomu bývalo. Stále však existuje spousta programátorů, kteří ji preferují při práci s Excelem. Pokud jste jedním z těchto lidí, tento článek je pro vás.

Kopírování řádku v Excelu VBA je věc, pro kterou je aplikace Excel VBA opravdu užitečná. Můžete například chtít mít jeden soubor všech vašich příjmů s datem, účtem, kategorií, poskytovatelem, produkt / služba a náklady vstoupily najednou do jednoho řádku, jak se vyskytují - spíše se jedná o případ vývoje účetnictví než statické účetnictví. Chcete-li to provést, musíte být schopni zkopírovat řádek z jednoho listu do druhého.

Ukázkový program Excel VBA, který kopíruje řádek z jednoho listu do druhého - pro zjednodušení používá pouze tři sloupce - obsahuje:

  • Alfa sloupec pro text
  • Číselný sloupec - na cílovém listu je vytvořena automatická částka
  • Sloupec data - aktuální datum a čas se vyplní automaticky

Úvahy o psaní kódu Excel VBA

Chcete-li spustit událost, která kopíruje řádek, jděte na standardní - ovládací prvek formuláře tlačítka. V Excelu klikněte na Vložit na kartě Vývojář. Poté vyberte ovládací prvek formuláře tlačítka a nakreslete tlačítko tam, kde chcete. Excel automaticky zobrazí dialogové okno, aby vám dal šanci vybrat

instagram viewer
makro spouštěné událostí kliknutí tlačítka nebo vytvořením nové.

Existuje několik způsobů, jak najít poslední řádek v cílovém listu, aby program mohl zkopírovat řádek dole. Tento příklad se rozhodne zachovat číslo posledního řádku v listu. Chcete-li zachovat číslo posledního řádku, musíte toto číslo někde uložit. Může to být problém, protože uživatel může číslo změnit nebo smazat. Chcete-li to obejít, umístěte jej do buňky přímo pod tlačítkem formuláře. To je pro uživatele nepřístupné. (Nejjednodušší je udělat v buňce hodnotu a pak přes ni přesunout tlačítko.)

Kód pro kopírování řádku pomocí Excel VBA

Sub Add_The_Line () Ztlumit currentRow jako celé listy ("List1"). Vyberte currentRow = Range ("C2"). Řádky hodnot (7) .Vyberte výběr. Kopírovat listy ("List2"). Vyberte Řádky (currentRow). Vyberte ActiveSheet. Vložit Dim theDate as Date theDate = Now () Cells (currentRow, 4) .Value = CStr (theDate) Cells (currentRow + 1, 3) .Activate Dim rTotalCell As Set Range rTotalCell = _ Sheets ("Sheet2"). Řádky. Počet, „C“). Konec (xlUp) .Offset (1, 0) rTotalCell = WorksheetFunction. Součet _ (rozsah ("C7", rTotalCell. Offset (-1, 0))) Listy ("List1"). Rozsah ("C2"). Hodnota = aktuálníRow + 1 End Sub 

Tento kód používá xlUp, „magické číslo“ nebo technicky vyjmenovanou konstantu, která je rozpoznávána metodou End. Posun (1,0) jednoduše posune o jeden řádek ve stejném sloupci, takže čistým efektem je vybrat poslední buňku ve sloupci C.

Slovy, prohlášení říká:

  • Přejděte na poslední buňku ve sloupci C (odpovídá End + Down Arrow).
  • Potom se vraťte zpět do poslední nepoužité buňky (odpovídá šipce End + Up).
  • Pak jděte nahoru o jednu buňku.

Poslední příkaz aktualizuje umístění posledního řádku.

VBA je pravděpodobně těžší než VB.NET, protože musíte znát objekty VB i Excel VBA. Použití xlUP je dobrým příkladem toho druhu specializovaných znalostí, které jsou rozhodující pro schopnost psát makra VBA, aniž by bylo nutné hledat tři různé věci pro každý příkaz, který kódujete. Společnost Microsoft učinila velký pokrok v upgradu editoru Visual Studio, který vám pomůže zjistit správnou syntaxi, ale editor VBA se příliš nezměnil.