Hvordan kopiere en rad i Excel VBA

click fraud protection

Å bruke VBA til å programmere Excel er ikke så populært som det en gang var. Imidlertid er det fortsatt mange programmerere som foretrekker det når du jobber med Excel. Hvis du er en av disse menneskene, er denne artikkelen noe for deg.

Kopierer en rad i Excel VBA er den typen ting Excel VBA virkelig er nyttig for. Det kan for eksempel være lurt å ha en fil med alle kvitteringene dine med dato, konto, kategori, leverandør, produkt / tjeneste, og kostnader lagt inn en linje om gangen, slik de forekommer - et eksempel på utvikling av regnskap i stedet for statisk regnskap. For å gjøre dette, må du kunne kopiere en rad fra ett regneark til et annet.

Et eksempel på Excel VBA-program som kopierer en rad fra ett regneark til et annet - bruker bare tre kolonner for enkelhets skyld - inneholder:

  • En alfakolonne for tekst
  • En numerisk kolonne - en automatisk sum blir opprettet på målark
  • En datakolonne - gjeldende dato og tid fylles ut automatisk

Hensyn til å skrive Excel VBA-kode

For å utløse en hendelse som kopierer raden, går du med standarden - en knappskjemakontroll. I Excel klikker du Sett inn på Utvikler-fanen. Deretter velger du knappskjemakontrollen og tegner knappen der du vil ha den. Excel viser automatisk en dialog for å gi deg en sjanse til å velge en

instagram viewer
makro utløst av klikkhendelsen på knappen eller for å opprette en ny.

Det er flere måter å finne den siste raden i målarket, slik at programmet kan kopiere en rad nederst. Dette eksemplet velger å opprettholde nummeret til den siste raden i regnearket. For å opprettholde nummeret til den siste raden, må du lagre nummeret et sted. Dette kan være et problem fordi brukeren kan endre eller slette nummeret. For å komme deg rundt dette, plasser den i cellen rett under skjema-knappen. På den måten er det utilgjengelig for brukeren. (Det enkleste å gjøre er å oppgi en verdi i cellen og deretter flytte knappen over den.)

Kode for å kopiere en rad ved hjelp av Excel VBA

Sub Add_The_Line () Demp currentRow Som heltallark ("Sheet1"). Velg currentRow = Range ("C2"). Verdirader (7) .Velg valg. Kopier ark ("Ark2"). Velg rader (gjeldende rad). Velg ActiveSheet. Lim inn Dim theDate As Date theDate = Now () Cells (currentRow, 4) .Value = CStr (theDate) Cells (currentRow + 1, 3). Aktiver Dim rTotalCell Som Range Set rTotalCell = _ Sheets ("Sheet2"). Cells ( rader. Telle "C"). Slutt (xlUp). Offset (1, 0) rTotalCell = WorksheetFunction. Sum _ (Range ("C7", rTotalCell.) Offset (-1, 0))) Ark ("Ark1"). Område ("C2"). Verdi = gjeldende rad + 1 sluttund 

Denne koden bruker xlUp, et "magisk nummer" eller mer teknisk en oppregnet konstant, som gjenkjennes ved sluttmetoden. Offset (1,0) beveger seg ganske enkelt opp en rad i samme kolonne, så nettoeffekten er å velge den siste cellen i kolonne C.

Med ord sier uttalelsen:

  • Gå til den siste cellen i kolonne C (tilsvarer End + Down Arrow).
  • Gå deretter tilbake til den siste ubrukte cellen (tilsvarer End + Up Arrow).
  • Deretter går du opp en celle til.

Den siste uttalelsen oppdaterer plasseringen av den siste raden.

VBA er sannsynligvis vanskeligere enn VB.NET fordi du må kjenne både VB og Excel VBA-objekter. Å bruke xlUP er et godt eksempel på den typen spesialiserte kunnskaper som er avgjørende for å kunne skrive VBA-makroer uten å slå opp tre forskjellige ting for hver uttalelse du koder. Microsoft har gjort store fremskritt med å oppgradere Visual Studio-redaktøren for å hjelpe deg med å finne ut riktig syntaks, men VBA-redaktøren har ikke endret seg mye.

instagram story viewer