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

A Miau Wiki wikiből
(Tanfolyami vezér-feladatok)
(Specialitások)
 
(94 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
 
  '''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 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 makró-írás kapcsán.
+
  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ényleg szüksége van a felhasználónak.
+
  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.
+
  Í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,  
 
  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.
 
  vagyis a miértek közös értelmezése.
  Ha nem az interaktivitás a cél, vagyis csak a hogyan a lényeg és a miért nem releváns, akkor tutoriálok kell készíteni/keresni/használni.
+
  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!
 
  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=
 
=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]'''
 
  ''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]'''
20. sor: 37. sor:
 
  ''4 of 4: https://www.youtube.com/watch?v=rf8rK7rzoU0 (06:21 - EN)''
 
  ''4 of 4: https://www.youtube.com/watch?v=rf8rK7rzoU0 (06:21 - EN)''
  
*Fogalmi, stratégiai alapozás: https://www.youtube.com/watch?v=AEUKbrdTkiY (13:13 - HU) '''[tematika 1]'''
+
*Fogalmi, stratégiai alapozás:  
 +
**https://www.youtube.com/watch?v=AEUKbrdTkiY (13:13 - HU) '''[tematika 1]'''
 +
***https://www.youtube.com/watch?v=LM-OrJgFTqo (05:16 - HU) - Az Excel kapcsolata más OOP nyelvekkel
 +
***https://www.youtube.com/watch?v=zeOXmKGP8nA (04:58 - HU) - UML
 
**Mi is az a VBA?
 
**Mi is az a VBA?
 
**Mit jelent a makró-rögzítés?
 
**Mit jelent a makró-rögzítés?
57. sor: 77. sor:
 
**Angol nyelvű szakszavak
 
**Angol nyelvű szakszavak
 
**Objektum-orientáltság (pl. munkalap_esemény)
 
**Objektum-orientáltság (pl. munkalap_esemény)
*User forms: https://www.youtube.com/watch?v=1hmuvovrMDw (11:42- EN)
+
**Event-dokumentációk:
 +
***https://learn.microsoft.com/en-us/office/vba/api/excel.worksheet.selectionchange (EN - TXT)
 +
***https://www.excelanytime.com/excel/index.php?option=com_content&view=article&id=111:worksheet-selection-change-event-excel-vba&catid=79&Itemid=475 (EN- TXT)
 +
***reprodukciós nézet (nyomkövetésre adaptálva: Event-handling-09:44-EN): https://miau.my-x.hu/temp/demo/sheet7.xlsm
 +
***115 events: https://powerspreadsheets.com/excel-vba-events/(EN - TXT)
 +
***áttekintés: https://trumpexcel.com/vba-events/ (EN - TXT)
 +
*User forms:  
 +
**https://www.youtube.com/watch?v=1hmuvovrMDw (11:42 - EN) - mini projekt
 +
**https://www.youtube.com/watch?v=IA7n-Q0Fjdk (05:50 - HU) - űrlapok
 +
**https://www.youtube.com/watch?v=r0NADeHCr5k (02:31 - HU) - űrlapok kezelése
 +
**https://www.youtube.com/watch?v=18i4PQD89O0 (03:56 - HU) - űrlap-gombok
 +
**https://www.youtube.com/watch?v=BAkDWy643aE (03:20 - HU) - feliratok
 +
**https://www.youtube.com/watch?v=8ySzYkIHXaE (04.18 - HU) - adatbevitel
 +
**https://www.youtube.com/watch?v=9jBf81a4pJI (07:49 - HU) - adatok áramlása űrlap és Excel között
 +
**https://www.youtube.com/watch?v=MZlkPCId220 (04:26 - HU) - listák használata
 +
**https://www.youtube.com/watch?v=vi2FJUic1Vs (10:20 - HU) - lista bővítése
 +
**https://www.youtube.com/watch?v=bjg13QXEPMw (10:27 - HU) - sokelemes listák kezelése
 +
**https://www.youtube.com/watch?v=mCyfe1Oh6Ao (11:27 - HU) - választási lehetőségek
 +
**https://www.youtube.com/watch?v=gUDdncCPte8 (03:28 - HU) - checkbox vs. option button (jelölő négyzet, rádiógomb, adatkeret) I. (frame)
 +
**https://www.youtube.com/watch?v=vKJR_niSv-A (05:01 - HU) - checkbox vs. option button (jelölő négyzet, rádiógomb, adatkeret) II.
 +
**https://www.youtube.com/watch?v=uznil60y590 (09:27 - HU) - checkbox vs. option button (jelölő négyzet, rádiógomb, adatkeret) III.
 +
**https://www.youtube.com/watch?v=-TPBQ7t0pyg (24:58 - HU) - checkbox vs. option button (jelölő négyzet, rádiógomb, adatkeret) IV.
 +
**https://www.youtube.com/watch?v=-yWzgN-y6Go (15:44 - HU) - checkbox vs. option button (jelölő négyzet, rádiógomb, adatkeret) V.
 +
**https://www.youtube.com/watch?v=neB38ULoq-M (06:15 - HU) - image
 
**...
 
**...
 
*Project explorer / Projekt tallózó: '''[tematika 2.3]'''
 
*Project explorer / Projekt tallózó: '''[tematika 2.3]'''
72. sor: 115. sor:
 
**F4
 
**F4
 
*Hibakezelés, hibakódok (szöveges segédanyagok): '''[tematika 5]'''  
 
*Hibakezelés, hibakódok (szöveges segédanyagok): '''[tematika 5]'''  
**https://hu.excel-lib.net/11705448-excel-vba-error-handling-all-you-need-to-know (HU)
+
**https://hu.excel-lib.net/11705448-excel-vba-error-handling-all-you-need-to-know (HU - TXT)
**https://hu.know-base.net/7580102-vba-error-handling (HU)
+
**https://hu.know-base.net/7580102-vba-error-handling (HU - TXT)
**https://hu.excel-lib.com/11705873-error-handling (HU)
+
**https://hu.excel-lib.com/11705873-error-handling (HU - TXT)
**https://hu.education-wiki.com/8318574-vba-error-handling (HU)
+
**https://hu.education-wiki.com/8318574-vba-error-handling (HU - TXT)
**https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/s6da8809(v=vs.100)?redirectedfrom=MSDN (EN) <--forrás: https://www.excelforum.com/excel-programming-vba-macros/601056-list-of-runtime-error-codes.html (EN)
+
**https://www.youtube.com/watch?v=mCyfe1Oh6Ao (11:26 - HU) - ÉLŐ kódfejlesztés hibakezeléssel
**Error codes (lista): https://chejunkie.com/knowledge-base/common-runtime-error-codes-vba/ (EN)
+
**https://www.youtube.com/watch?v=lzQrY2sRTWY (03:36 - HU) - Korrupt állományok javítása
 +
***háttér-állományok: https://drive.google.com/drive/folders/1Q3T-ggduRC75arCFn6rdsRmCvke24k3l
 +
***
 +
**https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/s6da8809(v=vs.100)?redirectedfrom=MSDN (EN) <--forrás: https://www.excelforum.com/excel-programming-vba-macros/601056-list-of-runtime-error-codes.html (EN - TXT)
 +
**Error codes (lista): https://chejunkie.com/knowledge-base/common-runtime-error-codes-vba/ (EN - TXT)
 
**Error codes (lista): https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/aa264975(v=vs.60)?redirectedfrom=MSDN (EN)
 
**Error codes (lista): https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/aa264975(v=vs.60)?redirectedfrom=MSDN (EN)
 
**Error codes (lista-generálás): https://learn.microsoft.com/hu-hu/office/vba/Language/Reference/User-Interface-Help/application-defined-or-object-defined-error (EN)
 
**Error codes (lista-generálás): https://learn.microsoft.com/hu-hu/office/vba/Language/Reference/User-Interface-Help/application-defined-or-object-defined-error (EN)
100. sor: 147. sor:
 
***A makró-rögzítés során alkalmazott megoldási logika általában eltér a kódírás során felmerülő (quasi tisztán matematikai) megoldások logikáitól... (vö. transzponálás, szűrés vs. ciklusok vezérlése)...
 
***A makró-rögzítés során alkalmazott megoldási logika általában eltér a kódírás során felmerülő (quasi tisztán matematikai) megoldások logikáitól... (vö. transzponálás, szűrés vs. ciklusok vezérlése)...
 
***Minden ötltet azonnal és kicsi méretben ellenőrizni kell (vö. pl. debug, F8, watch) és már az első hibánál le kell cserélni/finomítani kell az ötletet...
 
***Minden ötltet azonnal és kicsi méretben ellenőrizni kell (vö. pl. debug, F8, watch) és már az első hibánál le kell cserélni/finomítani kell az ötletet...
 +
*Class-modules (VBA):
 +
**https://www.youtube.com/watch?v=ie2Duci-qKQ (13:22 - EN) - (Válaszok a miért-is-lehet-ez-hasznos kérdésre...)
 +
*...
  
 
=Szöveges segédanyagok=
 
=Szöveges segédanyagok=
110. sor: 160. sor:
 
**https://xlmotyo.hu/blog/tombok-vba-ban/ (HU) (inkl. Option Base1és Option Explicit - https://excelkingdom.blogspot.com/2012/10/option-explicit.html)
 
**https://xlmotyo.hu/blog/tombok-vba-ban/ (HU) (inkl. Option Base1és Option Explicit - https://excelkingdom.blogspot.com/2012/10/option-explicit.html)
 
*Tudnivalók az Active X megoldásokról:
 
*Tudnivalók az Active X megoldásokról:
**https://support.microsoft.com/hu-hu/office/a-munkalapon-tal%C3%A1lhat%C3%B3-%C5%B1rlapok-%C5%B1rlapvez%C3%A9rl%C5%91k-%C3%A9s-activex-vez%C3%A9rl%C5%91elemek-%C3%A1ttekint%C3%A9se-15ba7e28-8d7f-42ab-9470-ffb9ab94e7c2 (HU) '''[tematika 6.4]'''
+
**https://support.microsoft.com/hu-hu/office/a-munkalapon-tal%C3%A1lhat%C3%B3-%C5%B1rlapok-%C5%B1rlapvez%C3%A9rl%C5%91k-%C3%A9s-activex-vez%C3%A9rl%C5%91elemek-%C3%A1ttekint%C3%A9se-15ba7e28-8d7f-42ab-9470-ffb9ab94e7c2 (HU - TXT) '''[tematika 6.4]'''
 +
**Excel nyomógombok:
 +
***https://support.microsoft.com/hu-hu/office/makr%C3%B3-hozz%C3%A1rendel%C3%A9se-%C5%B1rlaphoz-vagy-vez%C3%A9rl%C5%91gombhoz-d58edd7d-cb04-4964-bead-9c72c843a283 (HU - TXT)
 +
***https://tablazatkezeles.hu/sajat-gombok-letrehozasa-excel (HU - TXT)
 +
***https://hu.extendoffice.com/documents/excel/2879-excel-create-button-to-open-sheet.html (HU - TXT)
 
*Pivot funkciók numerikus kódjai:
 
*Pivot funkciók numerikus kódjai:
 
**https://learn.microsoft.com/en-us/office/vba/api/excel.xlconsolidationfunction
 
**https://learn.microsoft.com/en-us/office/vba/api/excel.xlconsolidationfunction
 
*Másolás, beillesztés:
 
*Másolás, beillesztés:
**https://www.excelcampus.com/vba/copy-paste-cells-vba-macros/ (EN, TXT)
+
**https://www.excelcampus.com/vba/copy-paste-cells-vba-macros/ (EN - TXT)
 
+
*Egyedi listaelemek kinyerése makró nélkül:
 +
**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
 +
***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:
 +
**https://learn.microsoft.com/en-us/office/vba/api/excel.range.offset (EN - TXT)
 +
*Worksheets vs Sheets
 +
**https://exceloffthegrid.com/sheets-and-worksheets-in-vba/ (EN - TXT)
 
*...(ide minden olyan forrás felsorolása indokolt, melyekre valakinek legalább egyszer érdemes volt rákeresnie)...
 
*...(ide minden olyan forrás felsorolása indokolt, melyekre valakinek legalább egyszer érdemes volt rákeresnie)...
  
124. sor: 189. sor:
 
**s a normál Excel-felületen lehetséges olyan manuális adatfeldolgozási logika kialakítása
 
**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
 
**és makró-rögzítéssel való hibátlan (esetlegesen hiányos) kóddá konvertálása
**mely kódrészletek felfogható egy építőanyag-raktárban tárolt erőforrásoknak
+
**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
 
**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
 
**programkódból felülvezérelhetők
138. 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)
 +
**...
 +
*...
  
 
=Tanfolyami vezér-feladatok=
 
=Tanfolyami vezér-feladatok=
 
*Alkossunk meg egy 8 rétegű személyiségprofil-készítő rendszert a 2DM játék log-adatai alapján méret-függetlenül, de minél kevesebb kódírással a makrórögzítési szakaszok után!
 
*Alkossunk meg egy 8 rétegű személyiségprofil-készítő rendszert a 2DM játék log-adatai alapján méret-függetlenül, de minél kevesebb kódírással a makrórögzítési szakaszok után!
 +
*https://miau.my-x.hu/miau/254/2dm_kemia_demo/
 
*https://miau.my-x.hu/temp/demo/robot_profiling_macro_f1.xlsm (első elemzési réteg)
 
*https://miau.my-x.hu/temp/demo/robot_profiling_macro_f1.xlsm (első elemzési réteg)
 
*https://miau.my-x.hu/temp/demo/robot_profiling_macro_select.xlsm (paraméterezési demo)
 
*https://miau.my-x.hu/temp/demo/robot_profiling_macro_select.xlsm (paraméterezési demo)
 
*https://miau.my-x.hu/temp/demo/robot_profiling_macro_f2.xlsm (második elemzési réteg inkl. paraméterezési demo)
 
*https://miau.my-x.hu/temp/demo/robot_profiling_macro_f2.xlsm (második elemzési réteg inkl. paraméterezési demo)
*f3-f4-f5-f6-f7-f8 (ASAP)
+
*https://miau.my-x.hu/temp/demo/f3_1.xlsm (harmadik elemzési réteg)
 +
*https://miau.my-x.hu/temp/demo/f4_1.xlsm (negyedik elemzési réteg: az f3-makró alapján kizárólag paraméter-finomhangolással - makró-rögzítés nélkül)
 +
*f5-f6-f7-f8-f* (ASAP)
 +
*Háttér-logika:
 +
**https://miau.my-x.hu/temp/demo/alany2_f1-2-3-4-5-6-7-8-plus.xlsx
 +
**https://miau.my-x.hu/miau2009/index_tki.php3?_filterText0=*2dm
 +
**https://miau.my-x.hu/miau2009/index_tki.php3?_filterText0=*robot-psz
 +
**https://miau.my-x.hu/miau2009/index_tki.php3?_filterText0=*2DM-alap
 +
***https://miau.my-x.hu/miau2009/index_tki.php3?_filterText0=*B-modell
 +
***https://miau.my-x.hu/miau2009/index_tki.php3?_filterText0=*3-4
 +
*https://miau.my-x.hu/temp/demo/f5_1.xlsm (sebesség3 fogalmának levezetése csak szűrletekre érvényes műveleteken keresztül)
 
*...
 
*...
 +
 +
=Házi feladat=
 +
*Milyen hideg lesz a tél 2022-ben?
 +
**Adatok: https://www.met.hu/eghajlat/magyarorszag_eghajlata/eghajlati_adatsorok/Budapest/adatok/napi_adatok/index.php
 +
**Módszertani demo: http://miau.my-x.hu/miau/111/chf30.doc
 +
**Részmegoldás makró-támogatással: https://miau.my-x.hu/miau/292/fagyos_napok_szama.xlsm
  
 
=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)
154. sor: 242. sor:
 
***nem mindegy hol kerül az RND() érték inicializálásra szakasz1 előtt, vagy után
 
***nem mindegy hol kerül az RND() érték inicializálásra szakasz1 előtt, vagy után
 
***érdemes felkészülni minden esetben arra, hogy a programlogika téves és végtelen ciklus/futásidő igény alakul ki
 
***érdemes felkészülni minden esetben arra, hogy a programlogika téves és végtelen ciklus/futásidő igény alakul ki
*Végtelen programfutás megszakításának lehetőségei: pl. https://hu.excel-lib.com/11705874-interrupt-a-macro (HU, TXT) + https://www.google.com/search?q=ctrl+break+on+dell+laptop (ctrl+break billentyű-kombináció beazonosítása pl. DELL laptopokon)
+
*Végtelen programfutás megszakításának lehetőségei: pl. https://hu.excel-lib.com/11705874-interrupt-a-macro (HU, TXT) + https://www.google.com/search?q=ctrl+break+on+dell+laptop (ctrl+break billentyű-kombináció beazonosítása pl. DELL laptopokon), ill. (HP: ctrl+fn+JOBBshift)
 
*Paraméter-átadás sub-ok között modulon belül:  
 
*Paraméter-átadás sub-ok között modulon belül:  
 
**https://learn.microsoft.com/en-us/office/vba/language/concepts/getting-started/calling-sub-and-function-procedures (EN, TXT)
 
**https://learn.microsoft.com/en-us/office/vba/language/concepts/getting-started/calling-sub-and-function-procedures (EN, TXT)
169. sor: 257. sor:
 
**https://prog.hu/tudastar/202388/vba-parameter-vagy-valtozo-atadas-excel-fajlok-kozott
 
**https://prog.hu/tudastar/202388/vba-parameter-vagy-valtozo-atadas-excel-fajlok-kozott
 
**Gyakorló feladatok: https://miau.my-x.hu/temp/demo/no_excel_file2file_aaa.xlsm + https://miau.my-x.hu/temp/demo/no_excel_file2file_bbb.xlsm (vö. elsofile() sub indítása)
 
**Gyakorló feladatok: https://miau.my-x.hu/temp/demo/no_excel_file2file_aaa.xlsm + https://miau.my-x.hu/temp/demo/no_excel_file2file_bbb.xlsm (vö. elsofile() sub indítása)
 +
**Gyakorló feladatok: https://miau.my-x.hu/temp/demo/no_excel_file2file_aaa2.xlsm + https://miau.my-x.hu/temp/demo/no_excel_file2file_bbb2.xlsm (vö. elsofile() sub indítása) - bbb2aaa2bbb (azaz láncreakció a C-meghajtó azonos könyvtárában a felhasználó által kezelt mindkét xlsm esetén)
 +
**Gyakorló feladatok: elérési utak teljes állomány-elnevezéssel, kiterjesztéssel: https://miau.my-x.hu/temp/demo/no_excel_file2file_aaa2b.xlsm + https://miau.my-x.hu/temp/demo/no_excel_file2file_bbb2b.xlsm
 +
**Gyakorló feladatok: sharepoint-elérési utak teljes állomány-elnevezéssel, kiterjesztéssel: https://miau.my-x.hu/temp/demo/no_excel_file2file_aaa2c.xlsm + https://miau.my-x.hu/temp/demo/no_excel_file2file_bbb2c.xlsm (csak demo a szerzőn kívül megfelelő jogosultságok nélkül) + https://miau.my-x.hu/temp/demo/sharepoint.png (csak a bbb-t megnyitva, s a hiba az aaa nyitása kapcsán lép fel - lokálisan)
 +
*VBA és WIN-SCP együttműködése:
 +
**https://winscp.net/forum/viewtopic.php?t=14699 (EN -TXT)
 +
*VBA és távoli meghajtók kapcsolata
 +
**https://prog.hu/tudastar/200797/jelszoval-vedett-halozati-meghajto-elerese-excel-vba (HU - TXT)
 +
**https://prog.hu/tudastar/122889/halozati-meghajto-eltavolitasa
 
*Tömbök:
 
*Tömbök:
 
**https://support.microsoft.com/hu-hu/office/lbound-f%C3%BCggv%C3%A9ny-ceb18f7b-c1fc-401e-b1fb-6916ef9e8310
 
**https://support.microsoft.com/hu-hu/office/lbound-f%C3%BCggv%C3%A9ny-ceb18f7b-c1fc-401e-b1fb-6916ef9e8310
176. sor: 272. sor:
 
**Gyakorló feladat: https://miau.my-x.hu/temp/demo/no_excel_goto_gosub_tombok_kepletek.xlsm
 
**Gyakorló feladat: https://miau.my-x.hu/temp/demo/no_excel_goto_gosub_tombok_kepletek.xlsm
 
**Gyakorló feladat: https://miau.my-x.hu/temp/demo/no_excel_goto_gosub_tombok_kepletek_relativ.xlsm
 
**Gyakorló feladat: https://miau.my-x.hu/temp/demo/no_excel_goto_gosub_tombok_kepletek_relativ.xlsm
 +
*Excel-verziók hatásai: https://miau.my-x.hu/mediawiki/index.php/Makro-parok-1 (2016 vs 365)
 +
**https://miau.my-x.hu/temp/demo/excel_365_m.docx
 +
**https://miau.my-x.hu/temp/demo/excel_2016_m.docx
 +
**https://miau.my-x.hu/temp/demo/excel_makro_parok.docx
 +
*Fájlból olvasás, fájlba írás:
 +
**https://software-solutions-online.com/vba-open-files/ (EN - TXT)
 +
**Gyakorló feladat: https://miau.my-x.hu/temp/demo/fajlbol_olvasas_fajlba_iras.xlsm
 +
***https://miau.my-x.hu/temp/demo/log2.csv
 +
***https://miau.my-x.hu/temp/demo/log
 +
***https://miau.my-x.hu/temp/demo/log.txt (a kiterjesztés nélküli állomány lett ellátva txt-kiterjesztéssel)
 +
***FreeFile: https://szlavip.web.elte.hu/Magamnak/VB/VB_le%EDr%E1s.pdf#page=353
 +
*Solver engedélyezése:https://www.wallstreetmojo.com/vba-solver/ (EN - TXT)
 +
**Excel: Options / Addins / Go / Solver
 +
**VBA: Tools / References / Solver
 +
**Reset Solver - lehetőség szerint minden indítás előtt (pl. https://www.solver.com/excel-solver-solverreset-function - EN - TXT)
 +
**Gyakorló feladat: https://miau.my-x.hu/temp/demo/solver.xlsm
 +
*WORD-makró futtatása Excel-ben (nem triviális):
 +
**https://miau.my-x.hu/temp/demo/word_makro.docm
 +
**https://miau.my-x.hu/temp/demo/word_makro_excel_is.xlsm
 +
**https://www.automateexcel.com/vba/word/open-document (EN - TXT)
 +
*PowerPoint - makró-rögzítés nincs
 +
**https://miau.my-x.hu/temp/demo/makro_rogzites_nincs.pptm
 +
**https://www.brightcarbon.com/blog/how-to-use-vba-in-powerpoint/ (EN - TXT)
 +
**https://www.youtube.com/watch?v=yxXAVAzXDx4 (EN - 05:16)
 +
**https://www.automateexcel.com/vba/powerpoint-macro-examples-tutorial/ (EN - TXT)
 +
*Vágólap-kezelés:
 +
**https://exceloffthegrid.com/what-is-cutcopymode-false-should-i-use-it/ (EN - TXT)
 +
**"Conclusion: Ultimately, the decision of whether to use Application.CutCopyMode = False comes down to this: if at the end of executing the macro, the marching ants are visible, and you don’t want them to be, then use it, otherwise don’t worry about it."
 +
**Hangyák léte/nem léte: https://miau.my-x.hu/temp/demo/minden_harmadik_adat_transzponalasa.xlsm
 +
*Változók típusai (pl. integer, long, double, stb.):
 +
**https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/data-type-summary (EN -TXT)
 +
**https://www.google.com/search?q=vba+long+integer&ei=VR9NY7yNDcLzkgXwpYmQBw&ved=0ahUKEwj8i-ja-Ob6AhXCuaQKHfBSAnIQ4dUDCA4&uact=5&oq=vba+long+integer&gs_lcp=Cgdnd3Mtd2l6EAMyBAgAEEcyBAgAEEc6CggAEEcQ1gQQsANKBAhBGABKBQhAEgExSgQIRhgAUMMBWMMBYP0PaAFwAngAgAEAiAEAkgEAmAEAoAEByAECwAEB&sclient=gws-wiz (EN -TXT)
 +
*Ha nem fut le egy a rendezés...
 +
**https://answers.microsoft.com/en-us/msoffice/forum/all/troubleshooting-autosort-vba-in-excel/1cbc4237-e8e1-440d-bc43-32898f4dedf9 (EN - TXT)
 +
**pl. érdemes lehet a rendezéssel érintett teljes területet megadni
 +
**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...
 +
**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 (EN - TXT)
 +
*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://miau.my-x.hu/bprof/2021/curl.docx (HU - TXT)
 +
*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)
 +
*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ó)
 +
*...
  
 
=Releváns témakörök=
 
=Releváns témakörök=
214. sor: 367. sor:
 
**6.3.  Vezérlők hozzárendelés makrókhoz
 
**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
 
**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

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