Hur man kopierar en rad i Excel VBA

Att använda VBA för att programmera Excel är inte så populärt som det en gång var. Men det finns fortfarande gott om programmerare som föredrar det när du arbetar med Excel. Om du är en av dessa människor är den här artikeln åt dig.

Kopiera en rad i Excel VBA är den typen saker som Excel VBA verkligen är användbar för. Till exempel kanske du vill ha en fil med alla dina kvitton med datum, konto, kategori, leverantör, produkt / tjänst och kostnad anges en rad i taget, eftersom de uppstår - ett exempel på att utveckla redovisning snarare än statisk redovisning. För att göra detta måste du kunna kopiera en rad från ett kalkylblad till ett annat.

Ett exempel på Excel VBA-program som kopierar en rad från ett kalkylblad till ett annat - med bara tre kolumner för att göra det enklare - innehåller:

  • En alfakolumn för text
  • En numerisk kolumn - en automatisk summa skapas i målarket
  • En datumkolumn - aktuellt datum och tid fylls automatiskt in

Överväganden för att skriva Excel VBA-kod

För att aktivera en händelse som kopierar raden, gå med standarden - en knappformulärkontroll. I Excel klickar du på Infoga på fliken Utvecklare. Välj sedan knappen för knappformulär och rita knappen där du vill ha den. Excel visar automatiskt en dialogruta så att du kan välja en

instagram viewer
makro utlöst av klickhändelsen på knappen eller för att skapa en ny.

Det finns flera sätt att hitta den sista raden i målbladet så att programmet kan kopiera en rad längst ner. Detta exempel väljer att behålla numret på den sista raden i kalkylbladet. För att behålla numret på den sista raden måste du lagra det numret någonstans. Detta kan vara ett problem eftersom användaren kan ändra eller radera numret. För att komma runt detta, placera den i cellen direkt under formulärknappen. På så sätt är det oåtkomligt för användaren. (Det enklaste är att ange ett värde i cellen och sedan flytta knappen över den.)

Kod för att kopiera en rad med Excel VBA

Sub Add_The_Line () Dim nuvarande rad som heltal ("Sheet1"). Välj currentRow = Range ("C2"). Värde rader (7) .Välj urval. Kopiera ark ("Ark2"). Välj rader (aktuell rad). Välj ActiveSheet. Klistra in Dim theDate som datum theDate = Now () Cells (currentRow, 4) .Value = CStr (theDate) Cells (currentRow + 1, 3). Aktivera Dim rTotalCell Som Range Set rTotalCell = _ Sheets ("Sheet2"). rader. Räkna, "C"). Slut (xlUp). Offset (1, 0) rTotalCell = WorksheetFunction. Summa _ (Range ("C7", rTotalCell. Förskjutning (-1, 0))) Ark ("Blad1"). Område ("C2"). Värde = nuvarande Rad + 1 slut Sub 

Denna kod använder xlUp, ett "magiskt nummer" eller mer tekniskt en uppräknad konstant, som känns igen av slutmetoden. Offset (1,0) rör sig helt enkelt upp en rad i samma kolumn, så nettoeffekten är att välja den sista cellen i kolumn C.

Med orden säger uttalandet:

  • Gå till den sista cellen i kolumn C (motsvarande End + Down Arrow).
  • Gå sedan tillbaka upp till den sista oanvända cellen (motsvarande End + Up Arrow).
  • Gå sedan upp ytterligare en cell.

Det sista uttalandet uppdaterar platsen för den sista raden.

VBA är förmodligen svårare än VB.NET eftersom du måste känna till både VB och Excel VBA-objekt. Att använda xlUP är ett bra exempel på den typ av specialkunskap som är avgörande för att kunna skriva VBA-makron utan att leta upp tre olika saker för varje uttalande du kodar. Microsoft har gjort stora framsteg när det gäller att uppgradera Visual Studio-redigeraren för att hjälpa dig ta reda på rätt syntax, men VBA-redaktören har inte förändrats mycket.

instagram story viewer