4 elkerülendő hiba Excel makrók VBA programozásakor

4 elkerülendő hiba Excel makrók VBA programozásakor

Microsoft Excel már alkalmas adatelemző eszköz, de azzal a képességgel, hogy automatizálja az ismétlődő feladatokat makrókkal azáltal, hogy egyszerű kódot ír a Visual Basic for Applications (VBA) programba, sokkal hatékonyabb. A VBA helytelen használata azonban problémákat okozhat.





Még ha Ön nem is programozó, a VBA egyszerű funkciókat kínál, amelyek lehetővé teszik lenyűgöző funkcionalitás hozzáadását a táblázatokhoz.





Nem számít, hogy VBA -guru vagy, aki műszerfalakat hoz létre Excelben, vagy kezdő, aki egyszerű szkripteket ír, amelyek alapvető cellaszámításokat végeznek. Kövesse ezeket az egyszerű programozási technikákat, hogy megtanuljon tiszta, hibamentes kódot írni.





Első lépések a VBA -val

A VBA mindenféle ügyes dolgot meg tud tenni érted. A lapokat módosító makrók írásától kezdve e -mailek küldése Excel táblázatból VBA szkriptek használatával nagyon kevés határa van a termelékenységének.

Ha még nem programozott az Excel VBA programjában, akkor engedélyeznie kell a fejlesztői eszközöket az Excel programban. A jó hír az, hogy a fejlesztői eszközök engedélyezése valójában nagyon egyszerű. Csak menj ide Fájl > Lehetőségek és akkor Szalag testreszabása . Csak mozgassa a Fejlesztő fülre a bal oldali ablaktábláról jobbra.



Győződjön meg arról, hogy a jelölőnégyzetben engedélyezve van ez a lap, és most a Fejlesztő fül jelenik meg az Excel menüjében.

Innen a legegyszerűbb módja annak, hogy belépjen a kódszerkesztő ablakába, ha rákattint a Kód megtekintése gomb alatt Vezérlők a Fejlesztői menüben.





Most már készen áll a VBA kód írására! Ezen a lapon érheti el a VBA -t is makrók rögzítése Excelben . Most, hogy az Excel készen áll a munkára, nézzük át az elkerülendő gyakori hibákat és azok megelőzésének módjait.

1. Borzalmas változónevek

Most, hogy a kódablakban van, ideje elkezdeni a VBA -kód írását. A legtöbb program első fontos lépése, legyen szó VBA -ról vagy más nyelvről, a változók meghatározása. A változók nem megfelelő elnevezése az egyik leggyakoribb programozási hiba, amelyet az új fejlesztők elkövetnek.





a telefonom folyamatosan felugrik

A kódírás évtizedei során sokféle gondolatkörrel találkoztam, amikor a változó elnevezési szabályokról van szó, és néhány szabályt keményen megtanultam. Íme néhány gyors tipp a változónevek létrehozásához:

  • Legyen a lehető legrövidebb.
  • Legyenek minél leíróbbak.
  • Előre írja be őket a változótípussal (logikai, egész, stb ...).

Íme egy minta képernyőkép egy olyan programból, amelyet gyakran használok WMIC Windows -hívások kezdeményezéséhez az Excelből a PC -adatok gyűjtéséhez.

Ha a modulon vagy objektumon belüli függvényben lévő változókat szeretné használni (ezt az alábbiakban kifejtem), akkor nyilvános változóként kell deklarálnia a deklaráció előtagjával Nyilvános . Ellenkező esetben a változókat a szóval előzetesen deklarálják Egyik sem .

Mint látható, ha a változó egész szám, akkor előtaggal van ellátva int . Ha ez egy húr, akkor o . Ez egy személyes preferencia, amely később segít programozás közben, mert a névre pillantva mindig tudni fogja, hogy a változó milyen típusú adatokat tárol.

Ezenkívül ne felejtse el megnevezni az Excel munkafüzet lapjait.

Így, amikor az Excel VBA -kódjában hivatkozik a lap nevére, akkor értelmes névre hivatkozik. A fenti példában van egy lapom, ahová behúzom a hálózati információkat, ezért a lapot 'hálózatnak' hívom. Bármikor hivatkozni akarok a Hálózat lapra, gyorsan meg tudom csinálni anélkül, hogy megnézném, milyen lapszámról van szó.

2. Törés hurok helyett

Az újabb VBA programozók egyik leggyakoribb problémája, amikor elkezdenek kódot írni, a hurkok megfelelő kezelése.

A ciklus nagyon gyakori az Excelben, mivel gyakran az adatok teljes soron vagy oszlopon belüli feldolgozását végzi, ezért mindegyik feldolgozásához ciklusokat kell végeznie.

Az új programozók gyakran azonnal ki akarnak törni egy ciklusból (VBA For hurkok vagy VBA Do While ciklusok), ha egy bizonyos feltétel teljesül.

Íme egy példa erre a módszerre, amelyet VBA -hurok megszakítására használnak.

For x = 1 To 20
If x = 6 Then Exit For
y = x + intRoomTemp
Next i

Az új programozók ezt a megközelítést választják, mert egyszerű. Próbálja meg elkerülni a hurok kifejezett megszakítását.

Leggyakrabban a „szünet” után érkező kód feldolgozása fontos. Egy sokkal tisztább és professzionálisabb módja annak, hogy kezelje azokat az állapotokat, amikor a ciklus felénél szeretne kilépni, csak be kell illesztenie ezt a kilépési feltételt egy VBA While utasításba.

While (x>=1 AND x<=20 AND x6)
For x = 1 To 20
y = x + intRoomTemp
Next i
Wend

Ez lehetővé teszi a kód logikus folyamatát. Most a kód ciklusba lép, és leáll, ha eléri a 6-ot. Nincs szükség kényelmetlen EXIT vagy BREAK parancsok beillesztésére a ciklus közepén.

3. Ne használjon tömböket

Egy másik érdekes hiba, amit az új VBA programozók elkövetnek, az az, hogy mindent megpróbálnak feldolgozni számos egymásba ágyazott cikluson belül, amelyek a számítási folyamat során szűrik le a sorokat és oszlopokat.

Ez komoly teljesítményproblémákhoz is vezethet. Az oszlopok közötti ciklus és az értékek minden egyes alkalommal történő kivonása gyilkos a processzoron. A hosszú számlisták kezelésének hatékonyabb módja a tömb használata.

Ha még soha nem használt tömböt, ne féljen. Képzeljen el egy tömböt jégkocka tálcaként, bizonyos számú „kockával”, amelybe információkat helyezhet. A kockák 1 -től 12 -ig vannak számozva, és így „rakja” be az adatokat.

Egyszerűen definiálhat egy tömböt csak gépeléssel Dim arrMyArray (12) egész számként .

hogyan lehet lekérni az ip címet az e -mailből

Ez létrehoz egy „tálcát” 12 résszel, amelyeket feltölthet.

Így nézhet ki egy tömb nélküli sorhurkos kód:

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
If Range('A' & str(x)).value <100 then
intTemp = (Range('A' & str(x)).value) * 32 - 100
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub

Ebben a példában a kód feldolgozásra kerül a tartomány minden egyes cellájában, és elvégzi a hőmérséklet számítását.

Ha valaha más számítást szeretne végezni ugyanazokkal az értékekkel, akkor a folyamat nehézkes lesz. Meg kell másolnia ezt a kódot, le kell dolgoznia ezeket a cellákat, és el kell végeznie az új számítást. Mindezt egy változtatásért!

Íme egy jobb példa egy tömb használatával. Először hozzuk létre a tömböt.

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
arrMyArray(x-1) = Range('A' & str(x)).value)
ActiveCell.Offset(1, 0).Select
Next
End Sub

Az x-1 a tömb elemre mutatáshoz csak azért szükséges, mert a For ciklus 1 -nél kezdődik. A tömb elemeknek 0 -tól kell kezdődniük.

Most, hogy megvan a tömb, a tartalom feldolgozása nagyon egyszerű.

Sub TempCalc()
For x = 0 To UBound(arrMyArray)
arrMyTemps(y) = arrMyArray(x) * 32 - 100
Next
End Sub

Ez a példa végigmegy a teljes sor tömbön ( UBound megadja a tömb adatértékeinek számát), elvégzi a hőmérséklet -számítást, majd beilleszti egy másik ún arrMyTemps .

4. Túl sok hivatkozás használata

Akár teljes értékű Visual Basic, akár VBA programozást végez, bizonyos funkciók eléréséhez „hivatkozásokat” kell tartalmaznia.

A hivatkozások olyanok, mint a „könyvtárak”, amelyek tele vannak olyan funkciókkal, amelyekre kihasználhatja, ha engedélyezi ezt a fájlt. A referenciákat a Fejlesztői nézetben találja, ha rákattint Eszközök menüben, majd kattintson a gombra Hivatkozások .

Ebben az ablakban megtalálja az aktuális VBA -projekt jelenleg kiválasztott hivatkozásait.

Ellenőrizze ezt a listát, mert a felesleges hivatkozások pazarolhatják a rendszer erőforrásait. Ha nem használ XML fájlkezelést, akkor miért kell a Microsoft XML -t kijelölni? Ha nem kommunikál egy adatbázissal, távolítsa el a Microsoft DAO -t stb.

Ha nem biztos abban, hogy ezek a kiválasztott hivatkozások mit tesznek, nyomja meg a gombot F2 és megjelenik az Object Explorer. Az ablak tetején kiválaszthatja a böngészni kívánt referenciakönyvtárat.

Miután kiválasztotta, látni fogja az összes objektumot és elérhető funkciót, amelyekre kattintva többet tudhat meg.

Például amikor rákattintok a DAO könyvtárra, gyorsan világossá válik, hogy ez az adatbázisokhoz való kapcsolódásról és azokkal való kommunikációról szól.

A programozási projektben használt hivatkozások számának csökkentése ésszerű, és segít az alkalmazás hatékonyabb működésében.

hogyan lehet kicsinyíteni a pdf -et Mac -en a minőség romlása nélkül

Programozás Excel VBA -ban

Az egész ötlet, hogy valóban kódot ír Excel -ben, sok embert megijeszt, de ez a félelem valóban nem szükséges. A Visual Basic for Applications egy nagyon egyszerűen megtanulható nyelv, és ha követi a fent említett alapvető gyakorlatokat, akkor biztosítja, hogy a kód tiszta, hatékony és könnyen érthető legyen.

Ne hagyja abba azonban. Hozzon létre egy erős alapot az Excel készségekhez a VBA bemutató kezdőknek . Ezután folytassa a VBA és a makrók megismerését olyan erőforrásokkal, amelyek segítenek a táblázatok automatizálásában.

Részvény Részvény Csipog Email Érdemes frissíteni Windows 11 -re?

A Windows újra lett tervezve. De ez elég ahhoz, hogy meggyőzze Önt, hogy váltson a Windows 10 -ről a Windows 11 -re?

Olvassa tovább
Kapcsolódó témák
  • Termelékenység
  • Programozás
  • Programozás
  • Visual Basic programozás
  • Microsoft Excel
A szerzőről Anthony Grant(40 cikk megjelent)

Anthony Grant szabadúszó író, aki programozással és szoftverrel foglalkozik. Számítástechnikai szakember, aki programozásban, Excelben, szoftverekben és technológiákban játszik.

Továbbiak Anthony Grant -tól

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide