Liv

Hur man kopierar en rad i Excel VBA

Hur man kopierar en rad i Excel VBA



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

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.

Att kopiera en rad i Excel VBA är den typ 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 in en rad i taget, eftersom de förekommer - 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å ett Excel-VBA-program som kopierar en rad från ett kalkylblad till ett annat med bara tre kolumner för enkelhet-innehåller:

  • En alfakolumn för text
  • En numerisk kolumn - en automatisk summa skapas på målbladet
  • 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 standard-a-knappformulärkontrollen. 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 för att ge dig en chans att välja ett makro som utlöses av klickhändelsen på knappen eller 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 Selection.Copy Sheets ("Sheet2"). Välj Rows (currentRow) .Välj ActiveSheet .Pasta 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.Count, "C"). Slut (xlUp). Offset (1, 0) rTotalCell = WorksheetFunction.Sum _ (Range ("C7", rTotalCell.Offset (-1, 0))) Ark ("Sheet1" ) .Range ("C2"). Värde = strömRow + 1 slutunder

Denna kod använder xlUp, ett "magiskt nummer", eller mer tekniskt en uppräknad konstant, som känns igen av End-metoden. 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 en cell till.

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 specialiserad kunskap 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.


Titta på videon: Ta bort lösenord från en skyddad arbetsbok i Excel (Augusti 2022).

Video, Sitemap-Video, Sitemap-Videos