Hoe een rij te kopiëren in Excel VBA

Het gebruik van VBA om Excel te programmeren is niet zo populair als het ooit was. Er zijn echter nog steeds veel programmeurs die er de voorkeur aan geven wanneer ze met Excel werken. Als jij een van die mensen bent, is dit artikel iets voor jou.

Een rij kopiëren in Excel VBA is het soort dingen waar Excel VBA echt handig voor is. U wilt bijvoorbeeld misschien één bestand van al uw ontvangsten met datum, account, categorie, provider, product / dienst, en kosten ingevoerd één regel tegelijk, zoals ze zich voordoen - een voorbeeld van evoluerende boekhouding in plaats van statische boekhouding. Om dit te doen, moet je een rij van het ene werkblad naar het andere kunnen kopiëren.

Een voorbeeld van een Excel VBA-programma dat een rij van het ene werkblad naar het andere kopieert, met slechts drie kolommen voor de eenvoud, bevat:

  • Een alfakolom voor tekst
  • Een numerieke kolom - er wordt automatisch een som gemaakt op het doelwerkblad
  • Een datumkolom - de huidige datum en tijd worden automatisch ingevuld
instagram viewer

Overwegingen bij het schrijven van Excel VBA-code

Om een ​​gebeurtenis te activeren die de rij kopieert, gaat u met de standaard: een knopformulierbesturing. Klik in Excel op Invoegen op het tabblad Ontwikkelaar. Selecteer vervolgens de knop Formulierbesturing en teken de knop waar u deze wilt hebben. Excel geeft automatisch een dialoogvenster weer waarin u de kans krijgt om een ​​te selecteren macro geactiveerd door de klikgebeurtenis van de knop of om een ​​nieuwe te maken.

Er zijn verschillende manieren om de laatste rij in het doelwerkblad te vinden, zodat het programma onderaan een rij kan kopiëren. In dit voorbeeld wordt ervoor gekozen om het nummer van de laatste rij in het werkblad te behouden. Om het nummer van de laatste rij te behouden, moet je dat nummer ergens opslaan. Dit kan een probleem zijn omdat de gebruiker het nummer kan wijzigen of verwijderen. Om dit te omzeilen, plaatst u het in de cel direct onder de formulierknop. Op die manier is het niet toegankelijk voor de gebruiker. (Het eenvoudigste is om een ​​waarde in de cel in te voeren en de knop eroverheen te bewegen.)

Code om een ​​rij te kopiëren met Excel VBA

Sub Add_The_Line () Dim currentRow As Integer Sheets ("Sheet1"). Selecteer currentRow = Range ("C2"). Waarde Rijen (7). Selecteer Selectie. Kopieer Sheets ("Sheet2"). Selecteer Rijen (huidigeRow). Selecteer ActiveSheet. Plak Dim theDate As Date theDate = Now () Cells (currentRow, 4) .Value = CStr (theDate) Cells (currentRow + 1, 3) .Activate Dim rTotalCell As Range Set rTotalCell = _ Sheets ("Sheet2"). Cells ( Rijen. Tel, "C"). Einde (xlUp) .Offset (1, 0) rTotalCell = WorksheetFunction. Som _ (bereik ("C7", rTotalCell. Offset (-1, 0))) Bladen ("Sheet1"). Bereik ("C2"). Waarde = currentRow + 1 End Sub 

Deze code gebruikt xlUp, een "magisch getal", of technischer een opgesomde constante, die wordt herkend door de End-methode. Offset (1,0) gaat gewoon één rij omhoog in dezelfde kolom, dus het netto-effect is om de laatste cel in kolom C te selecteren.

In woorden zegt de verklaring:

  • Ga naar de laatste cel in kolom C (equivalent aan End + pijl-omlaag).
  • Ga vervolgens terug naar de laatste ongebruikte cel (equivalent aan de End + pijl-omhoog).
  • Ga dan nog een cel omhoog.

De laatste instructie werkt de locatie van de laatste rij bij.

VBA is waarschijnlijk moeilijker dan VB.NET omdat je zowel VB- als Excel VBA-objecten moet kennen. Het gebruik van xlUP is een goed voorbeeld van het soort gespecialiseerde kennis dat essentieel is om VBA-macro's te kunnen schrijven zonder drie verschillende dingen op te zoeken voor elke instructie die je codeert. Microsoft heeft grote vooruitgang geboekt bij het upgraden van de Visual Studio-editor om u te helpen de juiste syntaxis te achterhalen, maar de VBA-editor is niet veel veranderd.

instagram story viewer