„Excel-makro” változatai közötti eltérés

A Miau Wiki wikiből
(Házi feladat)
(Specialitások)
 
(16 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva)
13. sor: 13. sor:
  
 
  A programozás kapcsán a tudás életképes csírája az, amit egyszer már sikerült ténylegesen alkalmazni is a látottak, hallottak közül!
 
  A programozás kapcsán a tudás életképes csírája az, amit egyszer már sikerült ténylegesen alkalmazni is a látottak, hallottak közül!
 +
 +
'''2023-tól minden Excel-makro-kérdést először a chatGPT-vel érdemes megkonzultálni: https://www.youtube.com/watch?v=yf783C-mnk4 '''
 +
+ https://www.youtube.com/watch?v=obWIImqBMxc
 +
Önellenőrzési lehetőség: Az az igény/elvárás/gondolat, melyet a chatGPT nem tud értelemesen kezelni, lehet, hogy még a Megrendelő fejében nem forrta ki magát eléggé?!
 +
(pl. nincs meg a megfelelő szóhasználat, a megfelelő nyelvi letisztultság, ...)
 +
  
 
=Jó tanácsok=
 
=Jó tanácsok=
166. sor: 172. sor:
 
**https://www.excelanytime.com/excel/index.php?option=com_content&view=article&id=470&Itemid=694 (EN - TXT)
 
**https://www.excelanytime.com/excel/index.php?option=com_content&view=article&id=470&Itemid=694 (EN - TXT)
 
**demo: https://miau.my-x.hu/temp/demo/select_distinct_2dm.xlsm
 
**demo: https://miau.my-x.hu/temp/demo/select_distinct_2dm.xlsm
**Gyakorló feladat: Egyedi elemek kinyerése kimutatásvarázslással, kimutatásvarázslást rögzítő makróval, kimutatástvarázslást nem használó, nem rögzített makróval
+
***EGYEDI(): https://support.microsoft.com/hu-hu/office/egyedi-f%C3%BCggv%C3%A9ny-c5ab87fd-30a3-4ce9-9d1a-40204fb85e1e
 +
***https://miau.my-x.hu/miau/293/flow1.xlsx (kérdőívek képlet-alapú értelmezése - pivot nélkül)
 +
***https://www.youtube.com/watch?v=obWIImqBMxc (DE - videó 00:15:00-)
 +
**Gyakorló feladat: Egyedi elemek kinyerése kimutatásvarázslással, kimutatásvarázslást rögzítő makróval, kimutatásvarázslást nem használó, nem rögzített makróval
 +
**Gyakorló feladat: Adatfrissítés utáni sorrendváltozás kikényszerítése makró nélkül: https://miau.my-x.hu/miau/292/makro_helyett.xlsx
 
*Offset:
 
*Offset:
 
**https://learn.microsoft.com/en-us/office/vba/api/excel.range.offset (EN - TXT)
 
**https://learn.microsoft.com/en-us/office/vba/api/excel.range.offset (EN - TXT)
193. sor: 203. sor:
 
*A jó programozó nem (csak) az, aki minden kérdésre azonnal és fejből tudja a választ, hanem az, aki képes az online tutoriálok, fórumok erdejében minél gyorsabban eligazodni.
 
*A jó programozó nem (csak) az, aki minden kérdésre azonnal és fejből tudja a választ, hanem az, aki képes az online tutoriálok, fórumok erdejében minél gyorsabban eligazodni.
 
*A programírás kevésbé a hogyan valósítsunk meg egy jól átgondolt adatfeldolgozási lépéssort problémájának kezelését jelenti, mint magának a megprogramozandó lépéssornak a minél inkább VBA-specifikus megtervezését.
 
*A programírás kevésbé a hogyan valósítsunk meg egy jól átgondolt adatfeldolgozási lépéssort problémájának kezelését jelenti, mint magának a megprogramozandó lépéssornak a minél inkább VBA-specifikus megtervezését.
 +
*Bizonyos más programnyelvekkel hasonló tapasztalatokra lehet szert tenni: pl.
 +
**https://www.youtube.com/watch?v=-NBh_GZ81os (HU-tutoriál: C# .NET fejlesztés alapjai)
 +
**...
 
*...
 
*...
  
221. sor: 234. sor:
  
 
=Specialitások=
 
=Specialitások=
 +
*F9<>xlsm: "Calculate" hatásai a cella-vizualizáció animációjára makro nélkül és makro-val: https://miau.my-x.hu/miau/302/Mappe1.xlsm
 +
*Makro-alapú Excel-hibajegy-kezelés kísérlete (valós esettanulmány): https://miau.my-x.hu/miau/302/excel_support1.docx
 
*Goto/Gosub (VBA-használat mindennemű Excel-kötődés/felületi kapcsolat nélkül quasi tisztán matematikai célokra):  
 
*Goto/Gosub (VBA-használat mindennemű Excel-kötődés/felületi kapcsolat nélkül quasi tisztán matematikai célokra):  
 
**https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/gosubreturn-statement (EN, TXT)
 
**https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/gosubreturn-statement (EN, TXT)
294. sor: 309. sor:
 
**Ha nem fut le minden egyes (elvileg identikus) laptopon ugyanaz a pivot-táblán belüli rendezést előíró makró?
 
**Ha nem fut le minden egyes (elvileg identikus) laptopon ugyanaz a pivot-táblán belüli rendezést előíró makró?
 
**ilyen esetben nem is lehet több cellát a makró-rögzítés kapcsán kijelölni a rendezés kikényszerítéséhez...
 
**ilyen esetben nem is lehet több cellát a makró-rögzítés kapcsán kijelölni a rendezés kikényszerítéséhez...
**ha tehát nem stabil a rendezés pivot-on belül, akkor kerülő út lehet a pivot másolatának rendezése: pl. https://www.automateexcel.com/vba/sorting/
+
**ha tehát nem stabil a rendezés pivot-on belül, akkor kerülő út lehet a pivot másolatának rendezése: pl. https://www.automateexcel.com/vba/sorting/ (EN - TXT)
**alternatív megoldás a makró-rögzítés logikája helyett a kézzel írt kód a rendezés kapcsán: pl. https://stackoverflow.com/questions/39778636/sort-pivottable-vba
+
**alternatív megoldás a makró-rögzítés logikája helyett a kézzel írt kód a rendezés kapcsán: pl. https://stackoverflow.com/questions/39778636/sort-pivottable-vba (EN - TXT)
 
*CMD-hívás (pl. C-URL) VBA-ból:
 
*CMD-hívás (pl. C-URL) VBA-ból:
 
**https://stackoverflow.com/questions/17956651/execute-a-command-in-command-prompt-using-excel-vba
 
**https://stackoverflow.com/questions/17956651/execute-a-command-in-command-prompt-using-excel-vba
**https://miau.my-x.hu/bprof/2021/curl.docx
+
**https://miau.my-x.hu/bprof/2021/curl.docx (HU - TXT)
 
*REM blokkosítása (sok kódsort egyszerre kijelölve):
 
*REM blokkosítása (sok kódsort egyszerre kijelölve):
 
**https://www.tachytelic.net/2018/11/how-to-comment-a-block-of-code-in-the-microsoft-office-vba-editor/ (inkl. videó 00:19)
 
**https://www.tachytelic.net/2018/11/how-to-comment-a-block-of-code-in-the-microsoft-office-vba-editor/ (inkl. videó 00:19)
 +
*Merevlemezről CSV-állomány beolvasása sorról sorra:
 +
**https://www.exceldemy.com/excel-vba-read-csv-file-line-by-line/ (EN - TXT)
 +
**inkl. DO-UNTIL-LOOP
 +
*Cellák tartalmának, helyének, típusának lekérdezése:
 +
**https://support.microsoft.com/hu-hu/office/cella-f%C3%BCggv%C3%A9ny-51bd39a5-f338-4dbe-a33f-955d67c2b2cf (HU - TXT)
 +
**https://www.automateexcel.com/vba/activecell-row-column/ (EN - TXT)
 +
*Range-műveletek:
 +
**https://www.wallstreetmojo.com/vba-variable-range/ (EN - TXT)
 +
**https://learn.microsoft.com/en-us/office/vba/api/excel.range.address (EN - TXT)
 +
*Email-küldés Excel-adatokkal: https://www.youtube.com/watch?v=obWIImqBMxc (DE - videó - kb. 00.19.00-)
 +
*Legördülő lista előállítása: https://www.youtube.com/watch?v=obWIImqBMxc (DE - videó - kb. 00:24:00-)
 +
*BEEP() és a HA()-függvény kapcsolata: https://www.youtube.com/watch?v=ue9a71AEVm4 (EN - videó)
 
*...
 
*...
  

A lap jelenlegi, 2023. augusztus 27., 09:19-kori változata

A szócikk laptörténete (https://miau.my-x.hu/mediawiki/index.php?title=Excel-makro&action=history) felfogható egy autodidakta VBA-kurzus lehetséges lefolyásaként!
A szócikk célja, hogy tutoriál-ajánlások mellett rámutasson szemléletformáló részletekre a rögzítés alapú makró-írás kapcsán.
A makró-rögzítésből ugyanis ritkán lesz pont az a funkcionalitás, amire ténylegesen szüksége van a felhasználónak.
Így a makró-rögzítés utáni kód hatásos és hatékony átalakítása érdekében tudni kell, mi is a felhasználó valós mozgástere (pl. mely "beégetett" paraméter hogyan vezérelhető).
Ez a wiki-szócikk tehát a rögzített makrókkal való együttműködést helyezi a fókuszba, de jelzés-értékűen egyfajta "Excel-mentes" programozási mintákat is bemutat...
(A VBA az itt jelzetteknél lényegesen többet tud! - vö. ajánlott tankönyv)
Egy Excel-tanfolyam lényege a szakmai vita, a ténylegesen megoldandó feladatokkal való közös azonosulás, az alternatívák és/vagy kockázatok feltárása, 
vagyis a miértek közös értelmezése.
Ha nem az interaktivitás a célja egy képzésnek, vagyis csak a hogyanok a lényegesek és a miértek nem relevánsak, akkor tutoriálok kell készíteni/keresni/használni,
ahogy az itt is számos ponton előkerül...
A programozás kapcsán a tudás életképes csírája az, amit egyszer már sikerült ténylegesen alkalmazni is a látottak, hallottak közül!
2023-tól minden Excel-makro-kérdést először a chatGPT-vel érdemes megkonzultálni: https://www.youtube.com/watch?v=yf783C-mnk4  
+ https://www.youtube.com/watch?v=obWIImqBMxc
Önellenőrzési lehetőség: Az az igény/elvárás/gondolat, melyet a chatGPT nem tud értelemesen kezelni, lehet, hogy még a Megrendelő fejében nem forrta ki magát eléggé?!
(pl. nincs meg a megfelelő szóhasználat, a megfelelő nyelvi letisztultság, ...)


Jó tanácsok

  • Bármennyire fáradságos, érdemes már rögtön az első kódírási kísérletkor az első VBA-rendszerüzenetet/hibaüzenetet, ennek kiváltó kódját és a megoldást jelentő kódot, ill. a megoldás lényegét egy fajta munkanaplóban folyamatosan rögzíteni, mert a rendszerüzenet/hibaüzenetek nem elég specifikusak ahhoz, hogy a programozó azonnal tudja, mit is rontott el, valamint hol kell változtatni a siker érdekében!
  • Ha egy kód azonnal sikerül, érdemes elrontani minél több ponton, hogy lássuk a rontások hatásait a működésre és/vagy a hibaüzenetekre...
  • Minél rövidebb egy kód, annál egyszerűbb rájönni a felmerülő hibák okára.
  • Érdemes minden kódírás előtt úm. manuálisan végig vinni a tervezett (adatfeldolgozási) lépéseket és így teszteredményekhez jutni, melyeket a lépésről-lépésre törtőnő (F8) ellenőrzés alatt minden egyes változó minden időpillanatban felvett értéke kapcsán lehet majd hasznosítani.

Tutoriál-ajánlások

Tankönyv: pl. https://szlavip.web.elte.hu/Magamnak/VB/VB_le%EDr%E1s.pdf
Gyors áttekintés/önteszt (17 kérdéskör): https://www.youtube.com/watch?v=S5awwOwnyhE (17 releváns tudnivaló kezdőknek - 16:35 EN) inkl. [tematika 5]
Technikák/önteszt (7 kérdéskör): https://www.youtube.com/watch?v=RD5mi9ba_Ys (7 koncepcionális alapvetés kezdőknek - 16:03 - EN) inkl. [tematika 3 + tematika 1.4/2.1]
Cellák kezelése (.cells) a VBA-ban/önteszt: https://www.youtube.com/watch?v=x_PCdMlO41M (1of4 - 05:56 - EN) inkl. [tematika 3]
2 of 4: https://www.youtube.com/watch?v=tlmFmcimIwU (06:21 - EN)
3 of 4: https://www.youtube.com/watch?v=oW2ZqqArIhA (05:24 - EN)
4 of 4: https://www.youtube.com/watch?v=rf8rK7rzoU0 (06:21 - EN)

Szöveges segédanyagok

Programozás-filozófiai alapvetések

  • A VBA olyan speciális keretrendszer, ahol
    • a grafikus interfész egy része = maga az Excel normál nézete
    • a grafikus interfész másik része pl. a VBA-alapú űrlapok, vezérlők
    • s a normál Excel-felületen lehetséges olyan manuális adatfeldolgozási logika kialakítása
    • és makró-rögzítéssel való hibátlan (esetlegesen hiányos) kóddá konvertálása
    • mely kódrészletek felfoghatók egy építőanyag-raktárban tárolt erőforrásoknak
    • s ezen erőforrások (építőanyagok: pl. szűrés, pivot, diagram, cellába is írható függvények, stb.) kapcsán a makrórögzítés egyedi (beégetett) paraméterei
    • programkódból felülvezérelhetők
    • így az építőanyagok eset-specifikusan testre szabhatók
    • s végül az épület (a program) ezen speciálisan felparaméterezett építőanyagok megfelelő sorrendű kapcsolatát jelentik...
  • Az objektum-orientáltság látszólag már áttekinthetetlen kombinatorikai/lehetőségi teret jelent, mely azonban inkább segít, mint hátráltat.
  • A VBA használható természetesen mindennemű grafikus felület bármilyen jellegű (vö. input/output) bevonása nélkül is (vö. változók definiálása, memória-alapú adatfeldolgozás).
  • A VBA használata annál indokoltabb, minél inkább sikerül a makró-rögzítővel előre legyártható sablonokra (építőanyagokra) támaszkodni.
  • Kódot "csak" a sablonok testre szabását illetően érdemes írni.
  • Minden funkció, amit mások már függvényként, vagy más módon előkészítettek, saját kódból is előállíthatók, de ezek a megoldások általában sokkal lassabbak lesznek.
  • A VBA-programírás lényege a sablonok testre szabásának képessége, vagyis hogy az azokba látszólag beégetett értékeket tetszőlegesen vezérelhető változókká és/vagy grafikus felületről érkező inputok tartalmává tudjuk alakítani.
  • Hasonlóképpen a programozási tudás fokmérője az Excel/VBA beépített funkcionalitásainak megkerülni tudása (pl. diagramok automatikus sorszámozásának programozó általi vezérelni tudása, vagy ennek megkerülése, pl. legrosszabb esetben is a teljes munkafüzet bezárásán és újra indításán keresztül).
  • A jó programozó nem (csak) az, aki minden kérdésre azonnal és fejből tudja a választ, hanem az, aki képes az online tutoriálok, fórumok erdejében minél gyorsabban eligazodni.
  • A programírás kevésbé a hogyan valósítsunk meg egy jól átgondolt adatfeldolgozási lépéssort problémájának kezelését jelenti, mint magának a megprogramozandó lépéssornak a minél inkább VBA-specifikus megtervezését.
  • Bizonyos más programnyelvekkel hasonló tapasztalatokra lehet szert tenni: pl.
  • ...

Tanfolyami vezér-feladatok

Házi feladat

Specialitások

Releváns témakörök

Egyes kulcsszavak angolul: pl. https://iqjb.hu/tanfolyamok/microsoft/microsoft-excel-word-powerpoint-project-access/feladatok-automatizalasa-a-microsoft-excel-ben-i
  • 1.     Makrók
    • 1.1.  Makrók rögzítése
    • 1.2.  Felvételi jellemzők beállítása
    • 1.3.  Makrók tesztelése, futtatása
    • 1.4.  Rögzített makrók kódjának vizsgálata
  • 2.     Program fejlesztői környezet
    • 2.1.  Makrók kódjának módosítása
    • 2.2.  VBA fejlesztői környezet
    • 2.3.  Projekt tallózó
    • 2.4.  Tulajdonság ablak
    • 2.5.  Kódszerkesztő
    • 2.6.  Objektumtallózó
    • 2.7.  Hibakeresés ablakai
  • 3.     VBA objektumai
    • 3.1.  Az objektum orientált programozás alapjai
    • 3.2.  Az Excel objektum modellje
    • 3.3.  Munkafüzet, munkalap, sorok, oszlopok, cellák objektum műveletei
  • 4.     VBA nyelv elemei
    • 4.1.  Változók
    • 4.2.  Vezérlési szerkezetek
    • 4.3.  Eljárások, függvények
    • 4.4.  Munkalap függvények használata VBA-ban
  • 5.     Hibakeresés
    • 5.1.  Hibakeresés, nyomonkövetés
    • 5.2.  Hibák típusai
    • 5.3.  Nyomonkövetés, lépésenkénti végrehajtás
    • 5.4.  Nyomonkövetés ablakai
    • 5.5.  Hibakezelés
  • 6.     Vezérlők alkalmazása
    • 6.1.  Vezérlők elhelyezése az Excel munkalapon
    • 6.2.  Nyomógomb, adatbeviteli mezők, választókapcsolók, jelölőnégyzet, kombinált lista, görgetősáv
    • 6.3.  Vezérlők hozzárendelés makrókhoz
    • 6.4.  Különbségek a munkalapi vezérlők és a VBA vezérlők között
Tesztek: https://docs.google.com/spreadsheets/d/1bi9V_AIAN1QGqTZ44bSoCemlnXggadZlCRjDFvOubSM/edit#gid=1931489930
Mentett állapot: https://miau.my-x.hu/temp/demo/vba_tesztek.xlsx