A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
| Előző változat mindkét oldalon Előző változat Következő változat | Előző változat | ||
|
tanszek:oktatas:muszaki_informatika:vba_feladatok [2024/02/22 15:01] knehez [Hogyan Működik?] |
tanszek:oktatas:muszaki_informatika:vba_feladatok [2024/02/22 17:05] (aktuális) knehez [5. Hibaellenőrzés és hibakezelés makrókban] |
||
|---|---|---|---|
| Sor 99: | Sor 99: | ||
| Ez a feladat egy makrót hoz létre, amely adatokat másol egyik munkalapról a másikra. A példa egyszerűsített, amely egy előre meghatározott tartomány adatait másolja át. | Ez a feladat egy makrót hoz létre, amely adatokat másol egyik munkalapról a másikra. A példa egyszerűsített, amely egy előre meghatározott tartomány adatait másolja át. | ||
| + | |||
| + | Ellenőrizzük, hogy van-e Munka1 és Munka2 elnevezésű munkalapunk. ha nincs hozzuk létre őket. | ||
| <sxh vb> | <sxh vb> | ||
| Sor 108: | Sor 110: | ||
| | | ||
| ' Munkalapok és tartományok beállítása | ' Munkalapok és tartományok beállítása | ||
| - | Set forrasMunkalap = ThisWorkbook.Sheets("Forras") | + | Set forrasMunkalap = ThisWorkbook.Sheets("Munka1") |
| - | Set celMunkalap = ThisWorkbook.Sheets("Cel") | + | Set celMunkalap = ThisWorkbook.Sheets("Munka2") |
| | | ||
| ' Másolandó tartomány beállítása a Forrás munkalapon | ' Másolandó tartomány beállítása a Forrás munkalapon | ||
| Sor 164: | Sor 166: | ||
| </sxh> | </sxh> | ||
| + | ====== 5. Hibaellenőrzés és hibakezelés makrókban ====== | ||
| + | |||
| + | Ebben a feladatban egy makró létrehozására mutatunk példát, amely megfelelő hibakezelést implementál a futásidő hibák láthatóvá tétele miatt. | ||
| + | |||
| + | <sxh vb> | ||
| + | Sub HibakezelesMakroban() | ||
| + | On Error GoTo Hibakezelo | ||
| + | | ||
| + | ' Itt történik a kód, ami hibát generálhat | ||
| + | Dim osztando As Double | ||
| + | Dim oszto As Double | ||
| + | osztando = 10 | ||
| + | oszto = 0 ' Ezzel a sorral osztásnál hibát generálunk | ||
| + | | ||
| + | Dim eredmeny As Double | ||
| + | eredmeny = osztando / oszto ' Ez hibát okoz, ha az oszto 0 | ||
| + | | ||
| + | MsgBox "Az eredmény: " & eredmeny | ||
| + | Exit Sub | ||
| + | |||
| + | Hibakezelo: | ||
| + | MsgBox "Hiba történt: " & Err.Description, vbCritical, "Hiba" | ||
| + | ' Itt történhetnek további hibakezelési lépések, pl. naplózás | ||
| + | End Sub | ||
| + | </sxh> | ||
| + | ==== Hogyan Működik? ==== | ||
| + | |||
| + | * A makró a ''On Error GoTo Hibakezelo'' utasítással kezdődik, ami azt jelenti, hogy ha a makró futtatása során hiba történik, a vezérlés átugrik a ''Hibakezelo'' címkéhez. | ||
| + | * A példában szándékosan generálunk egy hibát az osztásnál, ahol az osztó értéke 0. | ||
| + | * Ha ez a hiba megtörténik, a makró a ''Hibakezelo'' részre ugrik, ahol egy üzenetablakban megjelenik a hiba leírása. | ||
| + | * Az ''Exit Sub'' utasítás biztosítja, hogy ha hiba nélkül eljutottunk a makró végére, ne ugorjunk a hibakezelő részre. | ||
| + | * A hibakezelő részben lehetőség van további tevékenységekre, mint például a hiba naplózása vagy speciális hibakezelési rutinok végrehajtása. | ||
| + | |||
| + | ==== Hogyan Működik? ==== | ||
| + | |||
| + | * A makró a ''On Error GoTo Hibakezelo'' utasítással kezdődik, ami azt jelenti, hogy ha a makró futtatása során hiba történik, a vezérlés átugrik a ''Hibakezelo'' címkéhez. | ||
| + | * A példában szándékosan generálunk egy hibát az osztásnál, ahol az osztó értéke 0. | ||
| + | * Ha ez a hiba megtörténik, a makró a ''Hibakezelo'' részre ugrik, ahol egy üzenetablakban megjelenik a hiba leírása. | ||
| + | * Az ''Exit Sub'' utasítás biztosítja, hogy ha hiba nélkül eljutottunk a makró végére, ne ugorjunk a hibakezelő részre. | ||
| + | * A hibakezelő részben lehetőség van további tevékenységekre, mint például a hiba naplózása vagy speciális hibakezelési rutinok végrehajtása. | ||
| + | |||
| + | Ez a makró alapvető hibakezelési technikát mutat be, amely elengedhetetlen bármilyen robosztus VBA alkalmazás vagy makró fejlesztésekor, hogy a végfelhasználók számára kezelhető hibaüzeneteket biztosíthassunk. | ||