Másolás egy sorra az Excel VBA-ban

A VBA használata az Excel programozásához nem olyan népszerű, mint régen. Ugyanakkor még mindig sok a programozók, akik jobban kedvelik ezt az Excelgel való munka során. Ha Ön egy ilyen ember közé tartozik, ez a cikk neked szól.

Sor másolása az Excel programban VBA az a fajta dolog, amelyben az Excel VBA valóban hasznos. Érdemes lehet például egy fájlt az összes bevételéről dátummal, fiókkal, kategóriával, szolgáltatóval, a termék / szolgáltatás és a költség egyszerre egy sorba lépett be, ahogy azok bekövetkeznek - inkább a fejlődő könyvelés példája, mint a helyett statikus számvitel. Ehhez képesnek kell lennie egy sor másolására az egyik munkalapról a másikra.

Az Excel VBA programminta program, amely egy sort másol az egyik munkalapról a másikra - az egyszerűség érdekében csak három oszlopot használva - tartalmazza:

  • Egy alfa oszlop szöveg
  • Numerikus oszlop - automatikus összeg jön létre a céllapon
  • Dátum oszlop - az aktuális dátum és idő automatikusan kitöltendő

Az Excel VBA kód megírásának szempontjai

instagram viewer

Az esemény kiváltásához, amely másolja a sort, lépjen a szokásos - Button form control segítségével. Az Excel programban kattintson a Beszúrás elemre a Fejlesztő lapon. Ezután válassza ki a Button űrlapvezérlőt, és húzza a gombot a kívánt helyre. Az Excel automatikusan megjelenít egy párbeszédpanelt, hogy lehetőséget adjon a kiválasztásra makró amelyet a gomb kattintási eseménye vált ki, vagy egy új létrehozásához.

Számos módon találhatja meg az utolsó sort a cél munkalapon, így a program lemásolhat egy sort az alján. Ez a példa a munkalap utolsó sorának a fenntartását választja. Az utolsó sor számának fenntartásához ezt a számot valahol tárolni kell. Ez problémát jelenthet, mert a felhasználó megváltoztathatja vagy törölheti a számot. Ennek megkerüléséhez helyezze a cellába közvetlenül az űrlap gomb alatt. Ilyen módon elérhetetlen a felhasználó számára. (A legegyszerűbb az, ha értéket ír be a cellába, majd mozgatja rajta a gombot.)

Kód egy sor másolásához az Excel VBA használatával

Sub Add_The_Line () Eltávolítja az currentRow egész számot ("Sheet1"). Válassza a currentRow = Range ("C2") értéket. Lapok másolása ("Sheet2") Válassza a Sorokat (currentRow) .Válassza az ActiveSheet lehetőséget. Dátum beillesztése a dátum szerint dátum = dátum = most () cellák (currentRow, 4) .érték = CStr (theDate) cellák (currentRow + 1, 3) .Aktiválja a Dim rTotalCell mint tartományt. sorokban. Count, "C"). Vége (xlUp) .Offset (1, 0) rTotalCell = WorksheetFunction. Összeg _ (tartomány ("C7", rTotalCell. Eltolás (-1, 0))) Lapok ("Sheet1"). Range ("C2"). Value = currentRow + 1 End Sub 

Ez a kód az xlUp-t, a "mágikus számot" vagy technikailag egy felsorolt ​​konstansot használja, amelyet az End módszer felismer. Az eltolás (1,0) egyszerűen egy sorral feljebb lép ugyanazon oszlopban, tehát a nettó hatás az, hogy a C oszlop utolsó celláját válasszuk ki.

Szóval, a nyilatkozat így szól:

  • Ugorjon a C oszlop utolsó cellájához (egyenértékű a Vég + Lefelé mutató nyíllal).
  • Ezután térjen vissza az utolsó fel nem használt cellához (egyenértékű a Vég + Fel nyíllal).
  • Ezután menj fel még egy cellával.

Az utolsó utasítás frissíti az utolsó sor helyét.

A VBA valószínűleg nehezebb, mint a VB.NET, mert mind a VB, mind az Excel VBA objektumokat ismernie kell. Az xlUP használata jó példa a speciális tudás fajtájára, amely kritikus fontosságú ahhoz, hogy VBA makrókat írhassunk anélkül, hogy három különböző dolgot keresnénk minden kódolt állításhoz. A Microsoft nagy előrelépést tett a Visual Studio szerkesztő frissítésében, hogy segítsen megtalálni a helyes szintaxist, de a VBA szerkesztője nem változott sokat.