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