Upotreba VBA za programiranje Excela nije toliko popularna kao nekada. Međutim, još uvijek postoji puno programera koji to radije rade s Excelom. Ako ste jedan od tih ljudi, ovaj je članak za vas.
Kopiranje retka u Excel VBA je vrsta stvari za koju je Excel VBA zaista koristan. Na primjer, možda želite imati jednu datoteku svih primitaka s datumom, računom, kategorijom, davateljem usluga, proizvoda / usluge i troškova unose se jedan po jedan, u trenutku kad se pojavljuju - radije računovodstvo koje se mijenja, a ne statičko računovodstvo. Da biste to učinili, morate biti u mogućnosti kopirati redak s jednog radnog lista na drugi.
Primjer programa Excel VBA koji kopira retke s jednog radnog lista na drugi - koristeći jednostavna tri stupca - sadrži:
- Alfa stupac za tekst
- Numerički stupac - na ciljnom radnom listu stvara se automatski zbroj
- Stupac s datumom - trenutni datum i vrijeme automatski se popunjavaju
Razmatranja za pisanje Excela VBA koda
Da biste pokrenuli događaj koji kopira redak, idite sa standardnom - kontrolom obrasca gumba. U Excelu kliknite karticu Umetni na kartici Programer. Zatim odaberite kontrolu obrasca gumba i povucite gumb tamo gdje želite. Excel automatski prikazuje dijaloški okvir kako bi vam pružio priliku da odaberete
makro potaknut događajem klika na gumb ili za stvaranje novog.Nekoliko je načina pronalaska zadnjeg retka u ciljnom radnom listu kako bi program mogao kopirati redak na dnu. Ovaj primjer odabire održavanje zadnjeg retka na radnom listu. Da biste održali broj zadnjeg reda, morate ga negdje pohraniti. To može biti problem jer korisnik može promijeniti ili izbrisati broj. Da biste to zaobišli, stavite ga u ćeliju neposredno ispod gumba obrasca. Na taj način, korisniku je to nedostupno. (Najlakše je unijeti vrijednost u ćeliju i zatim pomaknuti gumb preko nje.)
Kôd za kopiranje retka pomoću Excela VBA
Pod Add_The_Line () Dim currentRow kao cjelobrojni listovi ("Sheet1"). Odaberite currentRow = raspon ("C2"). Vrijednosti Redovi (7) .Select Selection. Kopirajte listove ("Sheet2"). Odaberite retke (trenutniRow). Odaberite ActiveSheet. Zalijepi Dim theDate kao datum theDate = Sada () ćelije (trenutnaRow, 4) .Value = CStr (theDate) ćelije (currentRow + 1, 3). Aktiviraj Dim rTotalCell Kao raspon skupa rTotalCell = _ Sheets ("Sheet2"). redaka. Broj, "C"). Kraj (xlUp) .Offset (1, 0) rTotalCell = WorksheetFunction. Zbroj _ (raspon ("C7", rTotalCell Offset (-1, 0))) Sheets ("Sheet1"). Raspon ("C2") Vrijednost = currentRow + 1 End Sub
Ovaj kôd koristi xlUp, "čarobni broj" ili tehnički nabrojanu konstantu, što je prepoznato metodom End. Offset (1,0) se jednostavno pomiče prema gore u jednom stupcu prema gore, tako da je neto efekt odabir posljednje ćelije u stupcu C.
Riječima, izjava kaže:
- Prijeđite na zadnju ćeliju u stupcu C (ekvivalent kraju + strelica prema dolje).
- Zatim se vratite prema posljednjoj neiskorištenoj ćeliji (ekvivalent strelici Kraj + gore).
- Zatim, idite još jednu ćeliju.
Posljednja izjava ažurira lokaciju zadnjeg retka.
VBA je vjerojatno teži od VB.NET-a jer morate znati i VB i Excel VBA objekte. Korištenje xlUP-a je dobar primjer vrste specijaliziranih znanja koja su presudna za mogućnost pisanja makronaredbi VBA bez traženja tri različite stvari za svaku izjavu koju kodirate. Microsoft je postigao veliki napredak u nadogradnji uređivača Visual Studio kako bi vam pomogao da shvatite ispravnu sintaksu, ali VBA uređivač se nije puno promijenio.