Összetett VBA útmutató az MS Excel programhoz


Ha csak most kezd el a VBA-val, akkor érdemes elkezdenie a VBA útmutató kezdőknek tanulmányozását. De ha tapasztalt VBA-szakértő, és fejlettebb dolgokat keres az Excel segítségével a VBA-val, akkor olvassa tovább.

Az a lehetőség, hogy az VBA-kódolást Excelben használja, egész világot nyit meg. automatizálás. Automatizálhatja a számításokat az Excel programban, a nyomógombok segítségével, és e-maileket is küldhet. Több lehetőség van a napi munkájának automatizálására a VBA-val, mint gondolnánk.

Speciális VBA útmutató a Microsoft Excelhez

A VBA kód Excelben történő írásának fő célja az, hogy az információk kinyerhetők legyenek. egy táblázatból, végezzen különféle számításokat rajta, majd írja vissza az eredményeket a táblázatba

Az alábbiakban a VBA leggyakoribb felhasználási módjait használjuk az Excelben.

  • Adatok importálása és a számítások elvégzése
  • Az eredmények kiszámítása egy gombnyomással rendelkező felhasználótól
  • E-mailben számítási eredmények küldése valakinek
  • E három példa segítségével képes legyen írni a saját speciális Excel VBA kódját.

    Adatok importálása és számítások elvégzése

    Az egyik leggyakoribb dolog, amelyet az emberek az Excelhez használnak számításokat végez az Excelön kívüli adatokkal kapcsolatban. Ha nem használja a VBA-t, ez azt jelenti, hogy manuálisan kell importálnia az adatokat, futtatnia a számításokat, és ezeket az értékeket egy másik lapra vagy jelentésre kell kiadnia.

    In_content_1 all: [300x250] / dfp : [640x360]->

    A VBA segítségével automatizálhatja a teljes folyamatot. Például, ha minden hétfőn letölt egy új CSV-fájlt a számítógép egy mappájába, beállíthatja a VBA-kódot futtatásához, amikor kedden reggel nyitja meg a táblázatot.

    A következő importkód futtassa és importálja a CSV fájlt az Excel táblázatába.

    Dim ws As Worksheet, strFile As String
    Set ws = ActiveWorkbook.Sheets("Sheet1") Cells.ClearContents strFile = “c:\temp\purchases.csv” With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1")) .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .Refresh End With

    Nyissa meg az Excel VBA szerkesztő eszközt, és válassza a Sheet1 objektumot. Az objektum és módszer legördülő mezőiből válassza a Munkalapés az Aktiváláslehetőséget. Ez a kódot futtatja minden alkalommal, amikor megnyitja a táblázatot.

    Ez létrehoz egy Sub Worksheet_Activate ()funkciót. Illessze be a fenti kódot ebbe a funkcióba.

    Ez az aktív munkalapot Sheet1-re állítja, törli a lapot, csatlakozik a fájlhoz a strFileváltozóval megadott fájlútvonal segítségével, majd a A Ahurok a fájl minden során áthalad és az adatokat az A1 cellába kezdve helyezi a lapba.

    Ha ezt a kódot futtatja, látni fogja, hogy a CSV fájl adatai importálódik az üres táblázatba, a 1. lap-ba.

    Az importálás csak az első lépés . Ezután létrehoz egy új fejlécet az oszlophoz, amely tartalmazza a számítási eredményeket. Tegyük fel, hogy ebben a példában ki akarja számítani az egyes elemek eladásakor fizetett 5% -os adót.

    A kód végrehajtásának sorrendje a következő:

    1. Létrehozás új eredmény oszlop, az úgynevezett adók
    2. Lépjen át a eladott egységekoszlopba, és kiszámítsa az áfát.
    3. Írja be a kiszámított eredményeket a lap megfelelő sorához.
    4. A következő kód fogja végrehajtani ezeket a lépéseket.

      Dim LastRow As Long
      Dim StartCell As Range
      Dim rowCounter As Integer
      Dim rng As Range, cell As Range
      Dim fltTax As Double

      Set StartCell = Range("A1")

      'Find Last Row and Column
      LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row
      Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4))

      rowCounter = 2
      Cells(1, 5) = "taxes"

      For Each cell In rng
      fltTax = cell.Value * 0.05
      Cells(rowCounter, 5) = fltTax
      rowCounter = rowCounter + 1
      Next cell

      Ez a kód megtalálja az utolsó sort az adatlapján, majd az első és az utolsó sor szerint beállítja a cellák tartományát (az eladási árakat tartalmazó oszlop). Ezután a kód áthúzza ezeket a cellákat, elvégzi az adó kiszámítását, és az eredményeket beírja az új oszlopba (5. oszlop).

      Illessze be a fenti VBA kódot az előző kód alá, és futtassa a szkriptet. Az eredmények az E oszlopban jelennek meg.

      Most, amikor megnyitja az Excel munkalapot, automatikusan kialszik, és az adatok legfrissebb másolatát kapja a CSV-fájlból. Ezután elvégzi a számításokat, és az eredményeket beírja a lapra. Többé nem kell manuálisan tennie!

      Eredmények kiszámítása a gombnyomásokból

      Ha inkább közvetlen irányítást szeretne végezni a számítások futtatásakor helyett egy vezérlőgombot használhat.

      A vezérlőgombok hasznosak, ha ellenőrizni szeretnénk, hogy melyik számítást használjuk. Például ebben az esetben, mint fentebb, mi van, ha egy régióra 5% -os adómértéket és egy másik régióra 7% -os adómértéket akar használni?

      Ugyanazt a CSV-importkódot engedélyezheti az automatikusan fut, de hagyja, hogy az adószámítási kód futjon, ha megnyomja a megfelelő gombot.

      A fenti táblázat használatával válassza ki a Fejlesztőfület, majd válassza a Beszúrás lehetőséget.a szalag Vezérlőkcsoportjából. Válassza a nyomógombotaz ActiveX vezérlőt a legördülő menüből.

      Rajzolja a nyomógombot a lap bármely részére, attól a helytől, ahonnan minden adat megy.

      Kattintson a jobb gombbal a nyomógombra, és válassza a Tulajdonságoklehetőséget. A Tulajdonságok ablakban változtassa meg a képaláírást abban, amit meg szeretne jeleníteni a felhasználónak. Ebben az esetben ez lehet Számítsa ki az 5% -os adót.

      Ezt a szöveget maga a nyomógomb tükrözi. Zárja be a tulajdonságokablakot, és kattintson duplán a nyomógombra. Ez megnyitja a kódszerkesztő ablakot, és a kurzor abban a funkcióban lesz, amely akkor fut, amikor a felhasználó megnyomja a nyomógombot.

      Illessze be az adószámítási kódot a fenti szakaszból ebbe a funkcióba, az adómérték szorzóját 0,05-nél tartva. Ne felejtse el az aktív lap meghatározásához a következő 2 sort is beilleszteni.

      Dim ws As Worksheet, strFile As String

      Set ws = ActiveWorkbook.Sheets("Sheet1")

      Most ismételje meg a folyamatot egy második nyomógomb létrehozásával. Készítse el a feliratot Számítsa ki a 7% -os adót.

      Kattintson duplán arra a gombra és illessze be ugyanazt a kódot, de tegye az adó szorzóját 0.07-re.

      Most, attól függően, hogy melyik gombot nyomja meg, az adók oszlop ennek megfelelően kell kiszámítani.

      <ábra osztály = "lusta aligncenter méret nagy">

      Ha kész, mindkét nyomógomb megtalálható a lapon. Mindegyik eltérő adószámítást kezdeményez, és eltérő eredményeket ír az eredmény oszlopba.

      Ennek szövegezéséhez válassza a Fejlesztőmenüt, majd válassza a Tervezési módmenüpontot a Vezérlők csoportból a szalagon a Tervezési mód. Ez aktiválja a nyomógombokat.

      Próbáljon meg kiválasztani az összes nyomógombot, hogy megnézze, hogyan változik az „adók” eredmény oszlop.

      E-mail számítás eredménye valakinek

      Mit ha el szeretné küldeni e-mailben a táblázatban szereplő eredményeket valakinek?

      A fenti eljárással létrehozhat egy másik gombot, amelynek neve E-mail lap a főnöknek. Ennek a gombnak az kódja magában foglalja az Excel CDO objektum használatát az SMTP e-mail beállítások konfigurálásához és az eredmények e-mail küldését felhasználó számára olvasható formátumban.

      A szolgáltatás engedélyezéséhez ki kell választania a Eszközök és Irodalom. Görgessen le a Microsoft CDO for Windows 2000 Libraryelemre, engedélyezze azt, és válassza az OKlehetőséget.

      A kódnak három fő része van, amelyet létrehoznia kell az e-mail küldéséhez és a táblázatkezelési eredmények beágyazásához.

      Az első a változók tárolására szolgál. a tárgy, a cím és a cím, valamint az e-mail törzs.

      Dim CDO_Mail As Object
      Dim CDO_Config As Object
      Dim SMTP_Config As Variant
      Dim strSubject As String
      Dim strFrom As String
      Dim strTo As String
      Dim strCc As String
      Dim strBcc As String
      Dim strBody As String
      Dim LastRow As Long
      Dim StartCell As Range
      Dim rowCounter As Integer
      Dim rng As Range, cell As Range
      Dim fltTax As Double
      Set ws = ActiveWorkbook.Sheets("Sheet1")
      strSubject = "Taxes Paid This Quarter"
      strFrom = "[email protected]"
      strTo = "[email protected]"
      strCc = ""
      strBcc = ""
      strBody = "The following is the breakdown of taxes paid on sales this quarter."

      Természetesen a testnek dinamikusnak kell lennie, attól függően, hogy milyen eredmények a lapban, tehát itt hozzá kell adnia egy hurkot, amely átmegy a tartományon, kivonja az adatokat, és egy sort ír egyszerre a testhez.

      Set StartCell = Range("A1")
      'Find Last Row and Column LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4)) rowCounter = 2 strBody = strBody & vbCrLf For Each cell In rng strBody = strBody & vbCrLf strBody = strBody & "We sold " & Cells(rowCounter, 3).Value & " of " & Cells(rowCounter, 1).Value _ & " for " & Cells(rowCounter, 4).Value & " and paid taxes of " & Cells(rowCounter, 5).Value & "." rowCounter = rowCounter + 1 Next cell

      A következő szakasz az SMTP-beállítások beállítását foglalja magában, hogy e-maileket küldhessen az SMTP-kiszolgálón keresztül. Ha a Gmailt használja, ez általában a Gmail e-mail címe, a Gmail jelszava és a Gmail SMTP szerver (smtp.gmail.com).

      Set CDO_Mail = CreateObject("CDO.Message") 
      On Error GoTo Error_Handling Set CDO_Config = CreateObject("CDO.Configuration") CDO_Config.Load -1 Set SMTP_Config = CDO_Config.Fields With SMTP_Config .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True  .Update End With With CDO_Mail Set .Configuration = CDO_Config End With

      Csere [email protected] és jelszó a saját fiókjának adataival.

      Végül az e-mail küldés elindításához írja be a következő kódot.

      CDO_Mail.Subject = strSubject
      CDO_Mail.From = strFrom
      CDO_Mail.To = strTo
      CDO_Mail.TextBody = strBody
      CDO_Mail.CC = strCc
      CDO_Mail.BCC = strBcc
      CDO_Mail.Send

      Error_Handling:
      If Err.Description <> "" Then MsgBox Err.Description

      Megjegyzés: Ha szállítási hibát észlel, amikor ezt a kódot futtatja, valószínűleg azért van, mert Google-fiókja megakadályozza a „kevésbé biztonságos alkalmazások” futtatását. Látogatnia kell a kevésbé biztonságos alkalmazások beállításai oldal -ben, és be kell kapcsolnia ezt a funkciót.

      Miután engedélyezte ezt, az Ön e-mailje el lesz küldve. Így néz ki az a személy, aki megkapja az automatikusan létrehozott eredmények e-mailt.

      Mint láthatja, sok minden valóban automatizálható az Excel VBA segítségével. Próbáljon meg játszani a kódrészletekkel, amelyekről a cikkben tanult, és készítsen saját egyedi VBA-automatizálást.

      C kezdőknek - 1 - Bevezetés, Hello World

      Kapcsolódó hozzászólások:


      11.02.2020