tanszek:oktatas:muszaki_informatika:vba_feladatok
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tanszek:oktatas:muszaki_informatika:vba_feladatok [2024/02/22 17:05] – [5. Hibaellenőrzés és hibakezelés makrókban] knehez | tanszek:oktatas:muszaki_informatika:vba_feladatok [2024/04/24 11:12] (current) – [Hogyan Működik?] knehez | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== 1. Munkalapok neveinek listázása ====== | ====== 1. Munkalapok neveinek listázása ====== | ||
- | Ez a feladat egy olyan makró létrehozását | + | Ez a feladat egy olyan makró létrehozását |
<sxh vb> | <sxh vb> | ||
Line 58: | Line 58: | ||
* A makró először meghatározza a felhasználó által kijelölt tartományt a '' | * A makró először meghatározza a felhasználó által kijelölt tartományt a '' | ||
- | * Egy '' | + | * Egy '' |
* Végigiterál a tartomány összes celláján. | * Végigiterál a tartomány összes celláján. | ||
* Ellenőrzi, hogy a cella értéke üres-e. Ha nem, megvizsgálja, | * Ellenőrzi, hogy a cella értéke üres-e. Ha nem, megvizsgálja, | ||
Line 198: | Line 198: | ||
* Az '' | * Az '' | ||
* A hibakezelő részben lehetőség van további tevékenységekre, | * A hibakezelő részben lehetőség van további tevékenységekre, | ||
+ | |||
+ | Ez a makró alapvető hibakezelési technikát mutat be, amely elengedhetetlen bármilyen robosztus VBA alkalmazás vagy makró fejlesztésekor, | ||
+ | |||
+ | ====== 6. Dinamikus Diagramok Készítése ====== | ||
+ | |||
+ | A makró lehetőséget ad arra, hogy a felhasználók automatikusan frissülő diagramokat hozzanak létre, amelyek megváltoznak, | ||
+ | |||
+ | <sxh vb> | ||
+ | Sub CreateDynamicChart() | ||
+ | Dim ws As Worksheet | ||
+ | Dim chartObj As ChartObject | ||
+ | Dim lastRow As Long | ||
+ | Dim dataRange As Range | ||
+ | |||
+ | ' Munkalap beállítása | ||
+ | Set ws = ThisWorkbook.Sheets(" | ||
+ | |||
+ | ' Az utolsó adatsor megkeresése | ||
+ | lastRow = ws.Cells(ws.Rows.Count, | ||
+ | |||
+ | ' Dinamikus adattartomány létrehozása | ||
+ | Set dataRange = ws.Range(" | ||
+ | ws.Names.Add Name: | ||
+ | |||
+ | ' Diagram létrehozása a munkalapon | ||
+ | Set chartObj = ws.ChartObjects.Add(Left: | ||
+ | With chartObj.Chart | ||
+ | ' Diagram adatforrás beállítása a dinamikus tartományra | ||
+ | .SetSourceData Source: | ||
+ | .ChartType = xlLine ' Vonal diagram beállítása | ||
+ | .HasTitle = True | ||
+ | .ChartTitle.Text = " | ||
+ | End With | ||
+ | End Sub | ||
+ | </ | ||
==== Hogyan Működik? ==== | ==== Hogyan Működik? ==== | ||
+ | * A makró meghatározza a dinamikus adattartományt az **" | ||
+ | * Egy új diagramobjektumot hoz létre, és beállítja a diagram adatforrását a korábban meghatározott dinamikus tartományra. | ||
+ | * A diagram típusát vonaldiagramra állítja, és címet ad hozzá. | ||
- | * A makró a '' | + | Ez a makró |
- | * 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, | + | |
- | * Az '' | + | |
- | * A hibakezelő részben | + | |
- | Ez a makró alapvető hibakezelési technikát mutat be, amely elengedhetetlen bármilyen robosztus | + | ====== 7. Automatikus tartalomjegyzék készítése ====== |
+ | |||
+ | Írjuk egy makrót, ami egy tartalomjegyzéket készít | ||
+ | |||
+ | <sxh vb> | ||
+ | Sub Tartalomjegyzek() | ||
+ | Dim i As Long | ||
+ | |||
+ | On Error Resume Next | ||
+ | |||
+ | Application.DisplayAlerts = False | ||
+ | Worksheets(" | ||
+ | Application.DisplayAlerts = True | ||
+ | |||
+ | ThisWorkbook.Sheets.Add Before: | ||
+ | |||
+ | ActiveSheet.Name = " | ||
+ | |||
+ | For i = 1 To Sheets.Count | ||
+ | With ActiveSheet | ||
+ | .Hyperlinks.Add _ | ||
+ | Anchor: | ||
+ | Address: | ||
+ | SubAddress: | ||
+ | ScreenTip: | ||
+ | TextToDisplay: | ||
+ | End With | ||
+ | Next i | ||
+ | End Sub | ||
+ | </ | ||
+ | ==== Hogyan Működik? ==== | ||
+ | * Hiba Kezelés: //On Error Resume Next// parancs utasítja a VBA-t, hogy folytassa | ||
+ | * Figyelmeztetések Kikapcsolása: | ||
+ | |||
+ | ====== 8. A kiválasztott cellák képéként másolása ====== | ||
+ | Válasszunk ki egy tarományt amiben vannak értékek, majd futtassuk | ||
+ | <sxh vb> | ||
+ | Sub PasteAsPicture() | ||
+ | Application.CutCopyMode = False | ||
+ | Selection.Copy | ||
+ | ActiveSheet.Pictures.Paste.Select | ||
+ | End Sub | ||
+ | </ | ||
+ | |||
+ | ====== 9. Célkeresés ====== | ||
+ | |||
+ | Nagyon hasznos funkció, ha egy összetett képletek szerint változó cella értékét visszafelé akarjuk próbálgatni, | ||
+ | |||
+ | Például: adott egy számítás ami egy rendelés árát számolja ki, figyelembe véve az adót, a szállítási költséget. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | A példában 4000-ot kell fizetni az áruért. De mit tudunk csinálni ha csak **3500Ft** van kéznél? Valahogy visszafelé kellene számolni, hogy megtudjuk ekkor mekkora alap árat engedhetünk meg magunknak. | ||
+ | |||
+ | <sxh vb> | ||
+ | Sub GoalSeek() | ||
+ | Dim Target As Long | ||
+ | |||
+ | On Error GoTo Errorhandler | ||
+ | |||
+ | Target = InputBox(" | ||
+ | Worksheets(" | ||
+ | Rem ChangingCell = az alapár .... keressük az összesen = ' | ||
+ | Rem | ||
+ | With ActiveSheet.Range(" | ||
+ | .GoalSeek _ | ||
+ | Goal: | ||
+ | ChangingCell: | ||
+ | End With | ||
+ | |||
+ | Exit Sub | ||
+ | Errorhandler: | ||
+ | End Sub | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | A példában a B5 helyére az //' | ||
+ | A szkript megadja hogy a 3500Ft-os bruttó ár, **787.40Ft**-os alapárhoz tartozik. |
tanszek/oktatas/muszaki_informatika/vba_feladatok.1708621537.txt.gz · Last modified: 2024/02/22 17:05 by knehez