Felhasználói eszközök

Eszközök a webhelyen


tanszek:oktatas:muszaki_informatika:vba_feladatok

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

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 14:35]
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 27: Sor 27:
  
  
-====== 2. Duplikált ​Értékek Keresése ​és Kiemelése Makróval ​======+====== 2. Duplikált ​értékek keresése ​és kiemelése makróval ​======
  
 A feladat egy olyan makró létrehozása,​ amely megtalálja és kiemeli a duplikált értékeket egy adott tartományban az Excel munkalapon. A feladat egy olyan makró létrehozása,​ amely megtalálja és kiemeli a duplikált értékeket egy adott tartományban az Excel munkalapon.
 +
 +Sajnos függvénnyel nem lehet olyan cella paramétereit módosítani,​ ami más mint a függvény meghívásának cellája. Ezért a használat előtt ki kell jelölni azt a tartományt amit vizsgálni szeretnénk.
  
 <sxh vb> <sxh vb>
Sor 62: Sor 64:
     * Ha az érték még nem szerepel, hozzáadja a Dictionary-hoz.     * Ha az érték még nem szerepel, hozzáadja a Dictionary-hoz.
  
-Ez a makró ​hasznos eszköz lehet az adattisztítási folyamatokban, ahol fontos ​duplikált adatok gyors azonosítása ​és vizuális kiemelése.+====== 3. Dinamikus Tartományok Kezelése ====== 
 + 
 +Ez a feladat egy makró ​létrehozását valósítja meg, amely képes dinamikusan kezelni és frissíteni egy tartomány méretét ​az aktív munkalapon. 
 + 
 +<sxh vb> 
 +Sub DinamikusTartomanyFrissites() 
 +    Dim tartomany As Range 
 +    Dim utolsoSor As Long, utolsoOszlop As Long 
 +    Dim munkalap As Worksheet 
 +     
 +    Set munkalap = ActiveSheet 
 +     
 +    With munkalap 
 +        utolsoSor = .Cells(.Rows.Count,​ "​A"​).End(xlUp).Row 
 +        utolsoOszlop = .Cells(1, .Columns.Count).End(xlToLeft).Column 
 +         
 +        Set tartomany = .Range(.Cells(1,​ 1), .Cells(utolsoSor,​ utolsoOszlop)) 
 +    End With 
 +     
 +    tartomany.Select 
 +    MsgBox "A dinamikus tartomány kijelölve: " & tartomany.Address,​ vbInformation,​ "​Tartomány Frissítve"​ 
 +End Sub 
 +</​sxh>​ 
 + 
 +==== Hogyan Működik? ==== 
 + 
 +  - A makró először beállítja a munkalapot az aktív munkalapra (`ActiveSheet`). 
 +  - Az ''​utolsoSor''​ és ''​utolsoOszlop''​ változókat használva megkeresi az utolsó nem üres cellát a "​A"​ oszlopban és az 1. sorban, hogy meghatározza a tartomány határait. 
 +  - Az `.End(xlUp).Row` és `.End(xlToLeft).Column` metódusok segítségével határozza meg az utolsó sor és oszlop számát. 
 +  - Ezután létrehoz egy `Range` objektumot, amely az első cellától (A1) az utolsó nem üres celláig tart. 
 +  - Végül kijelöli ezt a tartományt és megjelenít egy üzenetablakot,​ amely tájékoztatja a felhasználót a frissített tartomány címéről. 
 + 
 +====== 4. Munkalapok közötti adatátvitel ====== 
 + 
 +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> 
 +Sub AdatatvitelMunkalapokKozott() 
 +    Dim forrasMunkalap As Worksheet 
 +    Dim celMunkalap As Worksheet 
 +    Dim masolandoTartomany As Range 
 +    Dim celTartomany As Range 
 +     
 +    ' Munkalapok és tartományok beállítása 
 +    Set forrasMunkalap = ThisWorkbook.Sheets("​Munka1"​) 
 +    Set celMunkalap = ThisWorkbook.Sheets("​Munka2"​) 
 +     
 +    ' Másolandó tartomány beállítása a Forrás munkalapon 
 +    Set masolandoTartomany = forrasMunkalap.Range("​A1:​A10"​) 
 +     
 +    ' A cél tartomány beállítása a Cél munkalapon 
 +    ' Itt feltételezzük,​ hogy a cél tartomány azonos méretű és helyen van, mint a forrás 
 +    Set celTartomany = celMunkalap.Range("​A1:​A10"​) 
 +     
 +    ' Adatok másolása 
 +    masolandoTartomany.Copy Destination:​=celTartomany 
 +     
 +    MsgBox "​Adatok átmásolva a '"​ & forrasMunkalap.Name & "'​ munkalapról a '"​ & celMunkalap.Name & "'​ munkalapra.",​ vbInformation,​ "​Adatátvitel Kész"​ 
 +End Sub 
 +</​sxh>​ 
 + 
 +==== Hogyan Működik? ==== 
 + 
 +  - Először is, beállítjuk a forrás és cél munkalapokat, ahol a forrás ​és cél munkalapok neveit közvetlenül a kódban adjuk meg. 
 +  - A másolandó tartományt beállítjuk a forrás munkalapon, itt az "​A1:​A10"​ tartományt használjuk példaként. 
 +  - Hasonlóképpen,​ megadjuk a cél tartományt a cél munkalapon, ami ebben az esetben azonos méretű és azonos helyen van, mint a forrás tartomány. 
 +  - A `.Copy` metódust használva másoljuk a forrás tartomány adatait a cél tartományba. 
 +  - Egy üzenetablak tájékoztatja a felhasználót az adatátvitel sikerességéről. 
 + 
 +A VBA-ban a zárójelek használata opcionális,​ amikor szubrutinokat (Sub) hívunk meg, és nincsenek visszatérési értékek. Ha a szubrutin vagy függvény paramétereit közvetlenül adjuk meg anélkül, hogy változókat vagy kifejezéseket használnánk,​ akkor a zárójelek elhagyhatók. Például:​ 
 + 
 +<sxh vb> 
 +Sub ExampleSub(parameter As String) 
 +    MsgBox parameter 
 +End Sub 
 + 
 +' Hívás zárójel nélkül 
 +ExampleSub "Hello World"​ 
 + 
 +' Hívás zárójellel - általában akkor szükséges,​ ha az eredményt változóba kell menteni vagy kifejezés részeként használjuk 
 +Call ExampleSub("​Hello World"​) 
 +</​sxh>​ 
 + 
 +**A := Jelölés a VBA-ban** 
 + 
 +A := jelölés a VBA-ban nevesített argumentumok (paraméterek) használatát teszi lehetővé függvények és eljárások hívásakor. Ez a szintaxis megengedi, hogy explicit módon megadjuk a paraméterek nevét és azokhoz tartozó értékeket,​ ami növeli a kód olvashatóságát és egyértelműségét,​ különösen akkor, ha a függvény vagy eljárás több paramétert is fogad.  
 + 
 +Például:​ 
 +<sxh vb> 
 +Sub ExampleSubWithParams(firstParam As Integer, secondParam As String) 
 +    MsgBox "​Érték:​ " & firstParam & ", Szöveg: " & secondParam 
 +End Sub 
 + 
 +' Nevesített argumentumok használata 
 +Call ExampleSubWithParams(firstParam:​=10,​ secondParam:​="​Szöveg"​) 
 + 
 +' vagy 
 +ExampleSubWithParams firstParam:​=10,​ secondParam:​="​Szöveg"​ 
 +</​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.
  
tanszek/oktatas/muszaki_informatika/vba_feladatok.1708612535.txt.gz · Utolsó módosítás: 2024/02/22 14:35 szerkesztette: knehez