Az alábbi bejegyzéshez az inspirációt innen vettem.
A Tutorial egyfajta útmutató, egy adott folyamat lépéseit mutatja be kép, animáció, illetve videó felhasználásával.
A régi szép időkben, ha létrehoztam egy adatbázist vagy akár egyszerű táblázatot, a hozzá tartozó instrukciókat az alábbiak közül adtam hozzá:
# Külön munkalapon
# Szövegdoboz (textbox) segítségével az aktuális munkalapon
# Egyesített cellákban (ezt hamar meg is bántam) az aktuális munkalapon
# Megjegyzéseket szúrtam be a releváns cellákhoz az aktuális munkalapon
Most azonban ezektől eltérő, ám annál hasznosabb és látványosabb módszert ismertetek:
Itt az alakzatoké a főszerep, megfűszerezve egy csipetnyi VBA kóddal.
A „Tutorial” gomb voltaképpen egy alakzat (lekerekített téglalap), ami alatt még négy alakzat található: lásd a narancssárgával keretezett részeket:
Az alakzatoknál meg tudjuk adni, hogy más alakzatokhoz képest előrébb vagy hátrébb helyezkedjenek el: ez a „ZOrder” eljárás. Vagyis, ha rákattintunk a „Tutorial” gombra, akkor a makró a „Lepes1” gombot legfelülre helyezi, így az lesz látható:
1 |
Munka1.Shapes("Lepes1").ZOrder msoBringToFront |
Vagyis:
Látható, hogy a Kijelölés ablakban (sárgával kiemelve) helyet cserélt a „Tutorial” és a „Lepes1” és a gombon is látszik, hogy immár a „Lepes1” van legfelül, vagyis csak ez látható.
A feliratábrák (callouts) animációja valójában ezen alakzatok mozgatása, kis késleltetéssel, melyet az alábbi makró végez:
1 2 3 4 5 6 |
Sub IdoKeret(IdoMegallitas As Double) Kezdet = Timer Do DoEvents 'ideiglenesen leállítja a makró futtatását a képernyõ frissítésének céljából Loop Until (Timer - Kezdet) >= IdoMegallitas End Sub |
Itt a „DoEvents” parancs a kulcs. Itt az a lényege, hogy ideiglenesen leállítja a makró futtatását a képernyő frissítésének céljából. Vagyis a feliratábra nem csak A pontból B pontba ugrik, hanem mozog valamelyest, majd megáll, majd ismét mozog, amíg el nem éri a megadott pozíciót. Ha nagyon rövid időre áll meg, azt a szemünk egyfajta mozgásként érzékeli:
Kapcsolódó VBA kódok:
Az adott munkafüzetben nyissuk meg a Visual Basic szerkesztőjét (ALT + F11-gyel). Majd kattintsunk duplán a „ThisWorkbook” névre és a kódot adjuk hozzá
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Private Sub Workbook_Open() 'Készítette: XLMotyo (https://xlmotyo.hu) 'munkafüzet megnyitásakor: Feliratábrák, szövegdoboz és a kéz ikon eltûnnek és csak a "Tutorial" gomb látszik Munka1.Shapes("Tutorial").ZOrder msoBringToFront Munka1.Shapes("FeliratAbra1").Visible = msoFalse Munka1.Shapes("FeliratAbra2").Visible = msoFalse Munka1.Shapes("FeliratAbra3").Visible = msoFalse Munka1.Shapes("FeliratAbra4").Visible = msoFalse Munka1.Shapes("KattintsALepesekert").Visible = msoFalse End Sub |
Az adott munkafüzetben nyissuk meg a Visual Basic szerkesztőjét (ALT + F11-gyel). Majd szúrjunk be egy modult és az alábbi kódot adjuk hozzá:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
Dim Kezdet As Single Private Const Idotartam As Double = 0.11 'Ha túl gyors a FeliratAbra mozgása a munkalapon: növelni az értéket és fordítva 'Készítette: XLMotyo (https://xlmotyo.hu) 'a makró a munkalapon lévõ táblázat kitöltéséhez ad segítséget animáció formájában. Kattintsunk a "Tutorial" gombra, majd a '"Lépés" feliratú gombokra és kövessük a megjelenõ feliratábrákon lévõ utasításokat. 'A Feliratábrák pozíciói (felsõ azaz top és bal vagyis left) manuálisan lettek beállítva Sub IdoKeret(IdoMegallitas As Double) Kezdet = Timer Do DoEvents 'ideiglenesen leállítja a makró futtatását a képernyõ frissítésének céljából Loop Until (Timer - Kezdet) >= IdoMegallitas End Sub Sub Tutorial() Munka1.Shapes("Lepes1").ZOrder msoBringToFront 'a "Tutorial" gomb megnyomásakor a "Lepes1" gomb lesz legfelül, azaz látható Munka1.Shapes("KattintsALepesekert").Visible = msoTrue 'láthatóvá válik a "KattintsALepesekert" szöveg + kéz ikon End Sub Sub Lepes_1() Munka1.Shapes("Lepes2").ZOrder msoBringToFront 'a "Lepes1" gomb megnyomásakor a "Lepes2" gomb lesz legfelül, azaz látható Munka1.Shapes("FeliratAbra1").Visible = msoTrue 'csak ez a FeliratAbra látható, a többi nem Munka1.Shapes("FeliratAbra2").Visible = msoFalse Munka1.Shapes("FeliratAbra3").Visible = msoFalse Munka1.Shapes("FeliratAbra4").Visible = msoFalse '"FeliratAbra1" pozícióinak beállítása Munka1.Shapes("FeliratAbra1").Top = 243.813 Munka1.Shapes("FeliratAbra1").Left = 83.667 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra1").Top = 235 Munka1.Shapes("FeliratAbra1").Left = 65 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra1").Top = 227 Munka1.Shapes("FeliratAbra1").Left = 50 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra1").Top = 219 Munka1.Shapes("FeliratAbra1").Left = 35 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra1").Top = 210.192 Munka1.Shapes("FeliratAbra1").Left = 22.115 End Sub Sub Lepes_2() Munka1.Shapes("Lepes3").ZOrder msoBringToFront 'a "Lepes2" gomb megnyomásakor a "Lepes3" gomb lesz legfelül, azaz látható Munka1.Shapes("FeliratAbra1").Visible = msoFalse Munka1.Shapes("FeliratAbra2").Visible = msoTrue 'csak ez a FeliratAbra látható, a többi nem Munka1.Shapes("FeliratAbra3").Visible = msoFalse Munka1.Shapes("FeliratAbra4").Visible = msoFalse '"FeliratAbra2" pozícióinak beállítása Munka1.Shapes("FeliratAbra2").Top = 254.294 Munka1.Shapes("FeliratAbra2").Left = 115.004 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra2").Top = 242.294 Munka1.Shapes("FeliratAbra2").Left = 106.004 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra2").Top = 230.294 Munka1.Shapes("FeliratAbra2").Left = 101.004 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra2").Top = 218.294 Munka1.Shapes("FeliratAbra2").Left = 96.004 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra2").Top = 206.294 Munka1.Shapes("FeliratAbra2").Left = 91.004 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra2").Top = 194.294 Munka1.Shapes("FeliratAbra2").Left = 92.542 End Sub Sub Lepes_3() Munka1.Shapes("Lepes4").ZOrder msoBringToFront 'a "Lepes3" gomb megnyomásakor a "Lepes4" gomb lesz legfelül, azaz látható Munka1.Shapes("FeliratAbra1").Visible = msoFalse Munka1.Shapes("FeliratAbra2").Visible = msoFalse Munka1.Shapes("FeliratAbra3").Visible = msoTrue 'csak ez a FeliratAbra látható, a többi nem Munka1.Shapes("FeliratAbra4").Visible = msoFalse '"FeliratAbra3" pozícióinak beállítása Munka1.Shapes("FeliratAbra3").Top = 254.85 Munka1.Shapes("FeliratAbra3").Left = 165.879 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra3").Top = 236.85 Munka1.Shapes("FeliratAbra3").Left = 157.879 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra3").Top = 218.85 Munka1.Shapes("FeliratAbra3").Left = 173.879 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra3").Top = 200.85 Munka1.Shapes("FeliratAbra3").Left = 189.879 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra3").Top = 190.85 Munka1.Shapes("FeliratAbra3").Left = 200.879 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra3").Top = 179.274 Munka1.Shapes("FeliratAbra3").Left = 215.841 End Sub Sub Lepes_4() Munka1.Shapes("Lepes1").ZOrder msoBringToFront 'a "Lepes4" gomb megnyomásakor a "Lepes1" gomb lesz legfelül, azaz látható Munka1.Shapes("FeliratAbra1").Visible = msoFalse Munka1.Shapes("FeliratAbra2").Visible = msoFalse Munka1.Shapes("FeliratAbra3").Visible = msoFalse Munka1.Shapes("FeliratAbra4").Visible = msoTrue 'csak ez a FeliratAbra látható, a többi nem '"FeliratAbra4" pozícióinak beállítása Munka1.Shapes("FeliratAbra4").Top = 256.749 Munka1.Shapes("FeliratAbra4").Left = 299.875 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra4").Top = 233.749 Munka1.Shapes("FeliratAbra4").Left = 290.875 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra4").Top = 219.749 Munka1.Shapes("FeliratAbra4").Left = 304.875 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra4").Top = 205.749 Munka1.Shapes("FeliratAbra4").Left = 318.875 IdoKeret (Idotartam) Munka1.Shapes("FeliratAbra4").Top = 194.095 Munka1.Shapes("FeliratAbra4").Left = 332.664 'itt: 5 másodperc után a Feliratábrák, szövegdoboz és a kéz ikon eltûnnek és csak a "Tutorial" gomb látszik IdoKeret (5#) 'frissíteni az értéket ha szükséges Munka1.Shapes("FeliratAbra1").Visible = msoFalse Munka1.Shapes("FeliratAbra2").Visible = msoFalse Munka1.Shapes("FeliratAbra3").Visible = msoFalse Munka1.Shapes("FeliratAbra4").Visible = msoFalse Munka1.Shapes("Tutorial").ZOrder msoBringToFront Munka1.Shapes("KattintsALepesekert").Visible = msoFalse End Sub |
Növeli a felhasználó élményt és prakticizmust, hogy a Tutorial lejátszása közben el is végezhetjük az instrukciókat, mintegy gyakorlásként. Itt a táblázat formátum sokat segít, hiszen új sor kitöltésénél automatikusan öröklődik az előző – kitöltött – sor formátuma:
A fenti ismertetőben nem tértem ki minden egyes részletre az egyszerűség (K.I.S.S.) elvét követve. Mintafájlért illetve kérdésekkel kapcsolatosan szólj hozzá lent vagy dobj egy emailt: xlmotyo@gmail.com