Kurzor alakjának változtatása userformon és a hozzá tartozó gombokon - egy kis extra agymenéssel

2017. június 26. - Office Guru

A userformok Excelben igen kedvelt kommunikációs csatornának számítanak, ha felhasználóinktól szeretnénk begyűjteni és rögzíteni mindenféle adatot, akár mondjuk egy konferenciára való jelentkezést vagy éppen időpontok foglalását tekintve. Egy alap userform elkészítése egy kis makróval kiegészítve alapvetően nem iszonyúan ördöngős feladat, de egy-két ügyes húzással könnyedén extrákat is adhatunk hozzá, ebből mutatok meg most egyet egy kérdésre válaszolva.

Tegyük fel, hogy a VBA-editor Insert menüjéből már be is szúrtunk egy egyszerű userformot:

pointer1.JPGHa automatikusan nem jelenik meg, akkor F4 lenyomásával hívjuk elő a Properties ablakot, amelyben látunk egy MousePointer névre hallgató tulajdonságot:

pointer2.JPGEnnek állítgatásával azt érhetjük el, hogy a kurzorunk az egyszerű nyílról meg fog változni valami másra, ha a userformunk fölé húzzuk. Például a 14-es fmMousePointerHelp paraméter egy kis kérdőjelet fog az egerünk mellé tenni:

pointer3.JPGA 13-as aztán egy indulást/töltődést jelző kis karikát fog nekünk kidobni:

pointer4.JPGHa pedig már kipróbáltuk az összes elérhető default típust és olyasmit szeretnénk, amit az Excel alapból nem tud, akkor válasszuk a 99-es, fmMousePointerCustom névre hallgató paramétert:

pointer5.JPGMajd az eggyel felette elhelyezkedő MouseIcon nevű tulajdonság sorában kattintsunk a három kis pöttyre és válasszuk ki a nekünk tetsző kis ikont:

pointer6.JPGItt akár berakhatunk egy céges logót, egy monogramot, bármit, amit szeretnénk, hogy megjelenjen ha a userform fölé húzzuk a kurzort. És értelemszerűen ez nem csak egy egész formon működik, a View menüből elérhető toolboxból beszúrható nagyjából bármilyen formára/controlra készíthetünk ilyet:

pointer7.JPGMaga ez a poszt tehát nem egy komplex történet, remélhetőleg azonban ad ötletet akár csak egyetlen Olvasónak is - én azonban az írás során olyan érdekes kis problémába botlottam, ami közvetlenül nem érinti az Officet, de elgondolkodtató.

Csináljunk egy egyszerű userformot a fentiek szerint mondjuk a 13-as típusú pointerrel, majd próbáljunk róla printscreent készíteni!

Az egyszerűbb screenshot-készítőkkel (pl. Snipping Tool, SnagIt) vagy a sima PrintScreen gombbal nem fogunk sikerrel járni, vagy egy extrább alkalmazást kell bevetnünk vagy használjuk a Windows beépített "Problem recorder" toolját. De ha valakinek van default, mindenféle külső alkalmazás nélküli jó ötlete, ne kíméljen!

Egy újabb Excel-kalkulációs hiba, ami valójában nem is az - 2. rész

Volt már hasonló kis finomságokról szó itt a blogon és a mai posztban ismét az Excel "iparági szabványból" következő határvonala kerül feszegetésre, ami igazából nem újdonság, de valószínűleg sokak számára még nem ismert. Ez pedig az Excel ún. 15-számos korlátja.

Adott a következő szorzás Excelben:

calculation.JPGHa megnézzük egy sima számológépben az eredményt, akkor ezt látjuk:

calculation2.JPGViszont ha Excelben nyomunk egy Entert a kis szorzásunkra, akkor ezt látjuk:

calculation25.JPGBizony, az Excel nem jó eredményt adott a szorzásunkra! És ez nem csak specifikusan ennél a szorzásnál van így, láthatjuk, hogy ha két 222 milliós számot szorzunk össze, akkor sincs minden rendben:

calculation3.JPGSőt, ilyen hosszú számokat be sem tudunk írni, az Excel 15 számjegy utána automatikusan 0-ra kerekít. Ha csak egy kalkulációnál futunk bele ebbe, akkor még azt is hihetjük, hogy valami gond van a táblázatkezelőnkkel, pedig amúgy nincs, amit tapasztalunk az szándékos és ismert korlát.

Ahogy ebben az írásban már fejtegettem, a magyarázat az Institute of Electrical and Electronics Engineers eredetileg kizárólag villamosmérnököket később aztán már informatikusokat is tömörítő szakmai szolgáltató szervezet egyik számformátumának követelményéből adódik, ami azt írja elő, hogy a számokat bináris formátumban kell tárolni (ez az IEEE 754/1985 lebegőpontos számformátum). Ebben a követelményrendszerben 15 számjegynél hosszabb számok tárolása nagyobb memóriát és erőforrást igényelne, így iparági szabványoknak megfelelően az erőforrások optimalizálása érdekében 15 számjegy után jön a kerekítés.

És bár szorzásnál ez annyira nem valószínű, hogy érinteni fog bennünket, de fontos észben tartani ezeket a korlátokat, hiszen pl. az 1/3 sem azt az eredményt fogja Excelben adni, mint amit matematikai tanulmányaink során próbáltak megtanítani nekünk.

További korlátokat láthatunk még a fentebb már linkelt írásban is, ahogy a lehetséges megoldásokat is, azaz a ROUND függvény vagy a Precision As Displayed funkció használatát.

Azért persze ez nagyjából olyan súlyú probléma, mint amikor régen a kéziszámológépek sem tudtak egészen egyszerű műveleteket megfelelően kezelni ilyen-olyan okokból kifolyólag, például amikor beadtuk a 369/258/147 osztást, majd az így kapott eredményt megszoroztuk előbb 147-tel, majd 258-cal - és a végeredmény nem 369 lett pontosan.

E-mail generálás Excelből kizárólag formulák segítségével

A VBA-s e-mailküldés valószínűleg az egyik legismertebb és leggyakrabban használt makró napjaink irodai hétköznapjaiban, de ahogy más hasonló esetekben lenni szokott, ha nem is ilyen széleskörű lehetőségekkel és valódi automatizmusként, de az Excel beépített formuláival is felépíthetünk valamit, ami részben ilyesmit képes mutatni nekünk - hangsúlyozom, a kettő nem összehasonlítható, de a következő formulás trükközés azért a maga módján igencsak előremutató.

A HYPERLINK függvény a lelke a következő kis posztnak, amely alapesetben a következőt tudja:

hyperlink01.JPGAhogy látható, első paraméterként megadjuk azt az internetes címet, elérési utat, ahova szeretnénk irányítani felhasználónkat, a második paraméterként pedig megadjuk azt a szöveget, ami a cellánkban fog majd szerepelni.

Ezt e-mail címmel is tudjuk használni, ilyenkor az első paraméternél a mailto: tag után beadjuk az érintett e-mailcímet, majd itt is adunk egy rövidebb, egyszerűbb nevet:

hyperlink02.JPGÉrtelemszerűen pontosvessző használatával több címet is meg tudunk adni, majd ha a linkre kattintunk, akkor az alapértelmezett levélküldőnkben meg fog nyílni egy új levél:

hyperlink03.JPGAzért a korlátok azok korlátok, webalapú levélküldőknél nem fog működni a dolog.

Fokozhatjuk a dolgot tovább, az első paraméterben a mailto: tag és az e-mail cím(ek) megadása után egy ?subject= utasítással tárgyat is tudunk adni az e-mailünknek, valahogy így:

hyperlink04.JPGSőt, még a levél szövegét is megírhatjuk, ha ez előbb megadott címzett(ek) és tárgy után egy &body= taget rakunk a HYPERLINK első paraméterébe, majd beírjuk, amit akarunk:

hyperlink05_1.JPGLáthatjuk, hogy ez így elég nyers és formázatlan kis anyag, de szépen meg is tudjuk törni a szövegünket, ahogy szeretnénk, méghozzá úgy, hogy pl. a sortöréseknél egy %0A kódot illesztünk a szövegbe:

hyperlink06.JPGEzeket a kódokat persze nem kell fejből megtanulnunk, ebben van segítségünkre ugyanis az ENCODEURL névre hallgató formula, ami annyit tesz, hogy egy beadott, tört szöveget megfelelően enkódol (minden nem alfanumerikus karaktert kódolni kell). Azaz szépen fel tudunk építeni egy kis táblát bizonyos mértékig automatikus levélküldésre (vagy inkább generálásra), hiszen a címzett, tárgy és szöveg mezőket kitöltetjük a felhasználóval, a szöveget egy ENCODEURL függvénnyel átalakítjuk, majd az egészet összefűzzük és végül egy linkre kattintva már meg is generálódik a levél:

hyperlink07.JPGTúlságosan persze ne örüljünk, ez csak rendkívül egyszerű levelekre és alapfeladatokra működhet, hiszen a HYPERLINK első paramétere maximum 255 karakter hosszú lehet, tehát igazán komplex történetekre nem felhasználható a fenti bűvészkedés.

Visszatérő poszt 3 Outlook-tanáccsal avagy hogyan tartsunk meg a naptárunkban egy visszautasított megbeszélést?

Jelentősebb, privát elfoglaltságoknak köszönhető kihagyás után ismét folytatódik a mindenféle Office-tanácsok, kérdések-válaszok, megoldások posztfolyama, rögtön kezdve egy egyszerű Outlookos írással, amelyben három, az elmúlt időszakban felmerült apró kérdésre keressük és találjuk meg a választ. Meg ezzel talán én is könnyebben visszarázódom a megszokott posztolási ritmusba.

Valószínűleg sokak szembesültek már azzal a problémával egy komplexebb levél nagy sebességgel történő gépelése során, hogy alapbeállításként az Outlook korrigálni fogja szavainkat, ha esetleg az első nagybetűt egy újabb nagybetű követné. Valahogy így:

outlook1.JPGA megoldás mindösszesen egyetlen pipa kikattintása, amelyhez lépjünk először az Outlook Options menübe a File menü Options almenüjére való kattintással, majd a Mail menüt kiválasztva kattintsunk a Spelling and Autocorrect gombra:

outlook2.JPGItt a Proofing alatt következzen az AutoCorrect options:

outlook3.JPGAz mondjuk már érdekes kis kérdés lenne, hogy az előző menüben az Autocorrect miért kis c-vel szerepel, amikor a következőben már nagy C-vel...

Az AutoCorrect menüben aztán végül az AutoCorrect fül alatt találjuk a minket érdeklő opciót, de ha körbenézünk ezeken a füleken, akkor elég sok finomhangolási lehetőséget találunk még:

outlook4.JPGA következő tanács az Outlook naptárját érinti, amelyben alapesetben harminc perces beosztások szerint tudunk megbeszéléseket, feladatokat ütemezni, de azért sokszor előfordulhat, hogy nem éppen egészkor vagy félkor kell kezdenünk egy találkozót, hanem mondjuk 45-kor vagy éppen 10-kor. És ha nem akarjuk állandóan kézzel hegesztgetni a meghívóinkat, akkor esetleg át is állíthatjuk a naptár beosztását. Ehhez a naptáron állva nyomjunk jobb gombot, majd válasszuk a View Settings opciót:

outlook5.JPGItt az Other Settingsre kattintva már láthatjuk is, hogy milyen opcióink vannak a naptár beosztását illetően:

outlook6.JPGÉs a végére a harmadik, végképp szükségtelen kis tanács, amely egy megbeszélés meghívójának visszautasítását érinti. Hogyan oldjuk meg azt a kérdést, ha egy meghívót vissza akarunk utasítani, de közben pedig szeretnénk magát a találkozót megtartani a naptárunkban?

A megoldás erre nem egy funkció, hanem egy szimpla kis trükközés, azaz először CTRL+C és CTRL+V segítségével másoljuk le a megbeszélésünket, ezután utasítsuk vissza az eredeti megbeszélést és már meg is vagyunk, hiszen a másolattal ott van a naptárunkban a találkozó, de közben pedig vissza is utasítottuk.

Word dokumentumokat egyesítő makrókezdemény

Különféle fájlok egyesítése, adattartalmuk egybemásolása elég gyakran felmerülő igény az Office különféle moduljaiban és ez nincs másként a Wordben sem. Így egy olvasói kérdés kicsit kibővített válaszában egy olyan kis VBA-makrót készítünk, amely gombnyomásra összemásolja különböző WORD dokumentumok tartalmát egyetlen fájlba.

Szóval adott egy folder, azon belül pedig ez a két példafájl:

w1_1.jpgMindkettő csak teljesen véletlenszerűen generált tartalommal van tele, de értelemszerűen ez a megoldás független a fájlok tartalmától:

w2_1.jpgCsak a példa kedvéért legyen valahol máshol egy fájlunk, amelyben lesz egy gomb, ami majd elindítja a másolási folyamat - persze ez csak kizárólag ebben a posztban lesz így, amúgy kitehetünk a Ribbonra is egy gombot, akár indítással futtatható makrót is készíthetünk, a lényeg, hogy valamilyen módon indítsuk el a programot:

w3_1.jpgSzépen lépjünk át a VBA-editorba és a gombhoz hozzárendelt makrót elkezdjük felépíteni, elsőként a változók deklarálásával. Szükségünk lesz három változóra és egy konstans értékre, kell egy változó a fájlnév és elérési út tárolására (File As String), egy változó az új dokumentum létrehozásához (Doc As Document) és egy változó a tartalom begyűjtésére a különböző fájlokból (rng As Range). A konstans értékünk az a folder lesz, ahonnan összesítjük a fájlokat, de ezt roppant egyszerű módon átalakíthatjuk arra is, hogy manuálisan választhassuk ki a foldert, de úgy is a kód átalakításával, hogy a fájlokat választhassuk ki egyesével.

Private Sub CommandButton1_Click()
Dim rng As Range
Dim Doc As Document
Dim File As String
Const Folder = "C:\"

Ezután a Doc változónkat meghatározzuk mint egy Documents.Add metódus, ami jelen esetünkben a Normál WORD template alapján megnyit és létrehoz egy teljesen új WORD-fájlt.

Set Doc = Documents.Add

A File változónk meghatározása előtt a DIR funkcióval kell megismerkednünk, ami egy speciális funkció VBA-ban, ugyanis ez egy olyan Stringet ad nekünk vissza, ami egy fájl nevét, elérési útvonalát jelenti - és ezt hangsúlyozni kell, hogy kizárólag a nevét, elérési útvonalát, mert egyéb attributumok begyűjtéséhez a FileObjectSystemet kell használunk.

File = Dir$(Folder & "*.docx")

Szintaxisa szerint a DIR első paramétereként az elérési utat adjuk meg, ami jelen esetben látszik is, hogy a folder, amit konstansként fentebb megadtunk, majd hozzáfűzve a docx kiterjesztés - azért használunk * karaktert, mert a fájl neve nem, csak a kiterjesztése érdekel minket. És hogy mi a $ jel? Ha ezt írjuk a DIR mögé, akkor biztosan Stringet ad vissza a funkció, ha nem írunk semmit, akkor egyértelműen Variant adattípust. Ilyen karakter például még a %, ami Integert ad vissza, az &, ami Longot és így tovább. Szóval ez jelen esetünkben simán el is hagyható egyébként.

Ezután pedig jön jóbarátunk a Do...Loop utasítás, amely szintaxisa szerint egészen addig ismétel egy vagy több utasítást, amíg a megadott feltételek fennállnak.

Jelen esetünkben például egészen addig másolgassa össze a fájlokat, amíg a folderben van .docx kiterjesztésű dokumentum:

Do Until File = ""

És mit csináljon? Fogja meg az üres, előbb létrehozott új fájlt, a Range.Collapse metódus wdCollapseEnd paramétere segítségével ugorjon a benne esetlegesen lévő tartalom végére, majd a Range.InsertFile metódus segítségével szúrja be ide a ciklusban aktuális kiválasztott fájl tartalmát. Ezután pedig tegye üressé ismét a File változót.

Set rng = Doc.Range
rng.Collapse wdCollapseEnd
rng.InsertFile Folder & File
File = Dir$()

Ezek után már csak egy dolog maradt hátra, méghozzá a Do...Loop utasítás lezárása a Looppal (esetleg egy MsgBox az eredménnyel).

Loop
MsgBox ("Kész!")
End Sub

Word-fájl tartalma a lehető leggyorsabban PowerPointba diákba

A mai poszt két Office-program, a Word és a PowerPoint kapcsolatát fogja kicsit boncolgatni egy olvasói kérdés megválaszolásán keresztül. A kedves kérdező arra volt kíváncsi, hogy milyen egyszerű módszerek léteznek Word dokumentumok gyors PowerPoint prezentációvá történő alakítására. A következőkben tehát egy ilyen módszert fogok bemutatni, amely az én véleményem szerint szöveges tartalmú prezentációknál az egyik leggyorsabb módszer erre az átalakításra - persze jöhetnek más, jobb, hatékonyabb ötletek kommentben, Facebookon vagy levélben.

Adott tehát a következő szövegfájlunk, ebből szeretnénk villámgyorsan prezentációt készíteni:

ppword1.jpgVégezzünk el rajta bizonyos formázásokat előzetesen, első lépésként azokat a címeket/bekezdéseket, amelyeket külön slide-okra akarunk és amelyek a slide-ok főcímei lesznek, a Home ribbonfül Styles szekciójában állítsuk Heading 1 típusú formátumra.

ppword2.jpgAz alcímeket/fő bullet pointokat állítsuk Heading 2 típusra:

ppword3.jpgÉs végül a szöveg, az alcímekhez tartozó tartalom legyen Heading 3:

ppword4.jpgÉrtelemszerűen ha további alábontásokat, tartalmakat is akarunk még, akkor azokhoz a szövegrészekhez rendeljünk egy külön Heading típust.

Ha beformáztuk megfelelően a Word fájlunkat, akkor Wordben a File menü Options almenüjéből válasszuk a Quick Access Toolbar opciót, majd a Ribbonon nem szereplő parancsok legördülő menüjének kiválasztása után tegyük ki a QAT-re a Send to Microsoft Powerpoint parancsot:

ppword5.jpgEzután már csak annyi dolgunk van, hogy rákattintunk a gombra:

ppword6.jpgÉs íme, elkészült az eredmény:

ppword7.jpgAhogy az a folyamat során valószínűleg elég egyértelműen látszott, olyan formátumban pakolhatjuk át a szövegeinket, amilyenben csak akarjuk, annyi szükséges hozzá, hogy előtte dolgozzuk meg a Word formátumát is.

A népszerű Waterfall/Bridge-diagram alapvetései

A Waterfall-chartot először a Mckinsey & Company tanácsadó cégének konzultánsai használták prezentációkban és elemzésekben, aztán rövidesen rendkívül elterjedtté vált a világon, boldog-boldogtalan ilyen jellegű diagramokkal mutatta meg eredményeinek alakulását - kezdetben ráadásul ez azért munkás is volt egy kicsit, hiszen például az Excel vagy a PowerPoint alapból nem is tudta ezt a diagramtípust. Egy Stacked Column Chartból lehetett általában kisebb módosításokkal elkészíteni, de aztán a 2016-os Office verzió már magával hozta azt, amiért sokan kérlelték a Microsoftot: az Excel és a PowerPoint is tudta kezelni ezt a típusú megjelenítést. Miután ennek a chartnak az ismerete a mai napig alapvetés bizonyos típusú elemzésekben, bemutatóknál, így következzen néhány lépésben a "vízesés" (bridge chartként is ismert) chart elkészítése. Adott a következő roppant egyszerű kis tábla:

stacked1.bmpEgyértelműen látszik, hogy mi a Waterfall-chart kiindulópontja és végeredménye: mindenféle értékek/eredmények alakulását mutatja meg a módosító tényezőkkel együtt.

Ha kijelöljük ezt a táblázatot teljes egészében, majd az Insert ribbonfül Charts szekciójában a Recommended Charts funkcióra kattintunk, akkor látjuk is, hogy az Excel már alapból odateszi nekünk ajánlott diagramtípusként a "vízesést":

stacked2.bmpÚgyhogy szúrjuk is szépen be ezt a diagramot és máris látjuk az alaptípusú Waterfallt:

stacked3.bmpAztán egyszerűen meg is foghatjuk ezt és átrakhatjuk egy PowerPoint diára, beillesztve szépen prezentációnk folyamába:

stacked4.bmpDe persze arra is van mód, ahogy fentebb már említettem, hogy PowerPointból készítsük el ezt a diagramot. Ehhez a prezentációs program Insert ribbonfülének Illustrations szekciójából szúrjunk egy Waterfall chartot:

stacked5.bmpÉs ezt egy automatikusan megnyíló Excel-ablakban szépen editálhatjuk is:

stacked6.bmpAnnyi fontos még, hogy a klasszikus nézet eléréséhez még egy lépést meg kell tennünk. Az eredményoszlopunk tömbjére kattintva jobb gombbal nyissuk meg a Format Data Point menüpontot, majd a Set as Total checkboxot pipáljuk be, ettől válik ugyanis igazi "honnan-hová" diagrammá a "vízesésünk".

stacked10.jpgEz volt az alapvető tudnivaló, amit mindenképpen fontos ismerni adatelemzéseknél, adatok bemutatásánál, de azért információként tároljuk el, hogy nem csak ilyen típusú "vízesést" tudunk készíteni, van ennek ugyanis többek között:

- fordított verziója, amikor nem oszlopokban, hanem sorokban jelenítjük meg az érintett volumeneket, tehát a legfelső sor a kiindulóállapot, a legalsó pedig az eredmény

- stacked verziója, amelyben minden egyes megjelenített tömböt még tovább lehet tagolni, tehát mintha a fenti példa esetében az adót tovább lehetne még bontani

- dupla verziója, amelyben megadhatunk egy terv- és egy tényértéket is, az egyiket mondjuk kitöltött tömbként, a másikat pedig csak körvonalként

- megosztott verziója, amikor a kiinduló tömböt megoszthatjuk és a megosztott részek alakulását követhetjük végig külön-külön megjelenített tényezőkkel (mintha a fenti példánál az Adó már a 2016-os záró értékben ki lett volna emelve és egy külön "bridge" segítségével az adó alakulását is végigkövetnénk)

Szóval van bőven lehetőség és kraft ebben a diagramtípusban, ne féljünk tőle, használjuk, tuningoljuk és színezzük bátran, biztosan sikert aratunk vele.

Az elfeledett Excel-funkciók nagykönyve - 1. A Consolidate

Rövidebb-hosszabb kutakodásaim és mindennapi tapasztalataim egyértelműen azt mutatják, hogy az Excelben bőven vannak úgymond "elfeledett" funkciók és gombok, amelyek nem sűrűn kerülnek használatra a napi feladatok során - nem azért, mert nem hasznosak, hanem egyszerűen nem épültek be úgy a köztudatba, mint egy VLOOKUP, egy PIVOT vagy egy Text to Columns.

Szerintem - és ezzel biztos lesznek, akik vitatkozni fognak - ilyen funkciónak nevezhetjük a a Ribbonunk Data füle alatt, a Data Tools szekcióban elérhető Consolidate funkciót is, pedig elég sok feladat elvégzésében lehetne segítségünkre.

apertura2.jpgIlyen feladat például egy egyszerű összehasonlítás két tábla között, amelyre használhatunk mindenféle praktikákat, mondjuk egy VLOOKUP függvényt oda-vissza és így tovább, pedig a Consolidate funkció is segíthet ebben. Adott a következő mintatábla:

apertura1.jpgAzt szeretnénk megtudni, hogy az 1967-es és a 2010-es chilei labdarúgó-bajnokság Apertura szezonjának csapatai közül melyek szerepeltek mindkét esztendőben. Néhány apró kattintással összesíthetjük is ezt az elemzést, amelyhez elsőként gyorsan megduplikáljuk a két oszlopot valahogy így:

apertura3.jpgRákattintunk a Consolidate funkcióra, majd a Function legördülő menüjét Countra állítva, hozzáadjuk a két hivatkozásunkat - az egyik értelemszerűen a két 1967-es oszlop lesz, a másik pedig a két 2010-es oszlop:

apertura4.jpgAnnak érdekében, hogy megfelelő összesítő táblát kapjunk, a Top row és a Left column Labels checkboxokat is pipáljuk be. Fontos tudni, hogy ezt elvégezhetjük nem csak ugyanazon a sheeten, de akár különböző munkafüzetekben is.

Nyomunk egy okét és máris kész az elemzésünk a várt eredménnyel:

apertura5.jpgDe ez csak egy volt a Consolidate sok lehetősége közül, például szummarizálni is hasonlóan egyszerűen tudunk vele. Adott mondjuk két sheeten két kis tábla adott havi bevételadatokkal (és akár lehet ez különböző Excel-fájlokban is):

apertura7.jpg

apertura8.jpgEzután a Consolidate gombra való kattintás után válasszuk ki a Sum funkciót, hivatkozásként jelöljük meg a két táblánkat, majd kattintsunk az okéra és kész is vagyunk:

apertura9.jpgapertura10.jpgVegyük mindenképpen észre, hogy a Create links to source data checkbox bekapcsolásával dinamikusan változhatnak értékeink a forrásadat változása alapján. És a fentiekkel a Consolidate funkciónak csak éppen a felszínét kapargattuk - mindenki bátran próbálkozzon vele, határozottan segítség a mindennapi feladatokban.

PowerPoint: egy érdekesség és egy furcsaság az elbow connectorról

A most következő posztban ismét visszatérünk a PowerPointhoz, ugyanis az Office prezentációs célokat szolgáló moduljának elbow connector névre hallgató formájával fogok szórakozni - bemutatok egy kis ügyeskedést illetve körüljárunk egy sokak által programhibának tartott viselkedést.

Az elbow connector (maradni fogok valószínűleg végig az angolnál) formáit legtöbbször folyamatábráknál, döntési fáknál szokták felhasználni, de ezen felhasználási módok során vannak korlátok, amelyek időnként fejtörést okozhatnak - ezek közül az egyik például az, amikor azt szeretnénk elérni, hogy a szakaszunknak ne csak az alapértelmezett egy, de két, vagy akár több "könyöke" legyen.

Nézzük meg egy ilyen, több könyökkel bíró elbow connector elkészítési folyamatát! Első lépésként a diánkra szúrjunk be egy téglalap-formát az Insert ribbonfül Illustrations szekciójában található Shapes menü alól:

bug1.jpgA kitöltést távolítsuk el azonnal (No Fill a Format ribbonfül alatt), majd jobb gombbal kattintva a formára, válasszuk az Edit Points menüpontot:

bug7.jpgEzután szépen jelöljük ki a téglalap "felső" oldalát:

bug8.jpgÚjra jobb gombbal történő kattintás után a Delete Segment funkció segítségével távolítsuk el ezt a "felső" oldalt:

bug9.jpgAlapesetben az egyik oldal el fog görbülni kicsit a törlés után:

bug10_1.jpgJobb gombbal való kattintás után az Edit Points menüpont segítségével irányba tudjuk mozdítani ezt az oldalt, hogy ebbe a helyzetbe kerüljünk:

bug11.jpgEzután visszatérünk az Insert ribbonfülhöz, amelynek Illustrations szekciójából megint beszúrunk egy formát, ezúttal egy nyilat:

bug12.jpgSzúrjunk be ezután majd még egy ugyanilyen nyílat és mindkettőt passzoljuk hozzá a "felső" oldal nélküli téglalap-formánk szabadon álló végeihez, valahogy így:

bug13.jpgMajd mindhárom formát (két nyíl és egy téglalap) jelöljük ki a CTRL nyomvatartása mellett és nyomjunk jobb gombot az egerünkön, hogy lehetőségünk legyen a Group paranccsal egyesíteni/csoportosítani őket. És innentől kezdve kész a két könyökkel bíró elbow connector, ami tetszőleges forgatható, tágítható, kicsinyíthető stb.

bug14.jpgUgyanennek az elbow connectornak egyébként van egy olyan tulajdonsága/viselkedése, amely sokak szerint a PowerPoint bugjainak egyike, bár jómagam inkább elvárt viselkedésnek tartom ezt, mint hibának. Hogy miről van szó? Nézzük meg!

Szúrjunk be az Insert ribbonfül alól két darab téglalap-formát:

bug1_1.jpg

bug2.jpgFontos, hogy elhelyezkedésük teljesen ugyanolyan legyen, tehát középpontjaik egy egyenesen helyezkedjenek el.

Ezután szúrjunk be egy elbow connectort szintén a Shapes menüpontból:

bug3.jpgEzzel az elbow connectorral aztán próbáljuk meg a felső téglalapunk "alsó" oldalának középpontját összekötni az alsó téglalapunk "felső" oldalának középpontjával. Hiába állítottuk pontosan középre mindkét formát, az elbow connector mégis megtörik középen, ott, ahol elvileg egyenesnek kellene lennie, hiszen a középpontok pontosan ugyanazon az egyenesen helyezkednek el.

bug4.jpgSúlyos problémáról nem beszélünk, hiszen könnyen javítható, elég hozzá jobb gombbal való kattintás után a Size and Position menübe lépni:

bug5.jpgMajd a Height értékét nullára korrigálni:

bug6.jpgA kérdés viszont marad: ez egy hiba vagy sem? Az elbow connector alapvetően nem egyenes nyíl, tehát a megtörés (a "könyök") elvárt reakció, de két egymásra teljesen illeszkedő középpont esetén ez valahogy mégsem áll össze teljesen egyértelműen.

Zenelejátszás Excelből - Jokermegoldás programfuttatáshoz

Ha már hétvége és napsütés (kissé masszívabb szélrohamokkal), akkor itt a blog hasábjain is vegyük kicsit szórakoztatóbbra az irányt, így a mai posztban ennek megfelelően (a korábbi Google-keresős vagy YouTube-lejátszós írások után) Excelből történő zenelejátszás kerül röviden terítékre. Magát a műveletet egy VBA-kódsorral fogjuk elvégezni, de elsőként hajtsuk végre a megfelelő előkészületeket, kezdjük mindjárt a playlistünkkel, amelyből választhat majd a kedves user.

play1.jpgCsinálhatjuk ezt kézzel, csinálhatjuk makróval, de csinálhatjuk command promptból is, a lényeg, hogy minél egyszerűbben készítsük el a playlistet (ez lehet egy könyvtárban lévő összes fájl listázása stb.).

Folytatásként csináljunk valamiféle kis designt a lejátszónknak, majd adjunk hozzá egy Data Validation Listet a fájlokból való választás lehetőségének létrehozása okán:

play3.jpg
Itt most nem töltöttem azzal időt, hogy a meghajtó (könyvtár) nevét eltávolítsam, de értelemszerűen még tovább lehet csiszolni ezen a listán.

Aztán a kis Play gombunkhoz (amelyet akár elkészíthetünk saját magunk is néhány alakzat felhasználásával) rendeljük hozzá a makrónkat a jobb gombbal való kattintással előhívható Context menü Assign Macro utasításával:

play2.jpg
Ezután már nincs más hátra, mint a VBA-kódunk megalkotása, amelyhez ALT+F11 lenyomásával ballagjunk át szépen a VBA-editorba. A kód hosszúságát tekintve roppant egyszerű, úgyhogy be is illesztem ide egy az egyben:

Sub MP3player()
ActiveSheet.OLEObjects.Add(Filename:=ActiveCell.Text, Link:=True).Select
Selection.Verb
Selection.Delete
End Sub

Azt ugye már korábbi posztokból megtanultuk, hogy az OLEObjects általában egy Active-X controlt, egy linkelt vagy beágyazott objektumot testesít meg, zárójelben mögötte nevesíthetjük is, hogy éppen melyiket. Az OLEObjects Verb metódusával pedig igazából műveletet tudunk végezni ezzel az objektummal, elég sok lehetőségünk van, amelyeket azonban az adott objektum forrásprogramja is meghatároz. Amennyiben nem adjuk meg a Verb paraméterét, akkor a default műveletet, a szerkesztést, lejátszást stb. fogja végrehajtani, amire pont szükségünk is van jelen esetben.

Azaz kódunk első sorában az aktív sheetünkön létrehozunk egy objektumot, amelynek FileName paramétere (tehát neve) az aktív cellánkban szereplő érték lesz (tehát a kiválasztott mp3 fájl teljes útvonala), a Link paramétert pedig azért kell True értékre állítanunk, hogy ez az új OLE objektum a FileName paraméterben megadott fájlhoz linkelésre is kerüljön. Ezt utána értelemszerűen kiválasztjuk, majd megy rá a Verb metódus, amiről fentebb illetve korábbi posztokban már írtam. Ha ez megtörtént, akkor töröljük az objektumot a kódunk harmadik sorával.

És innentől kezdve már működik is a dolog, ha kiválasztjuk a listából a megfelelő számot és a Play gombra kattintunk, már indul is az alapértelmezett lejátszóval a zeneszámunk. Értelemszerűen hibakezelésre még szükség van a kódban, ahogy az Application.ScreenUpdating babrálása is jól jöhet, de a lelke ez a három sor az egész műveletnek. És ami a legjobb az egészben, az az, hogy ez nem zenére működik csak, bármilyen fájlokkal meg tudjuk csinálni ugyanezt, azoknál kiválasztás esetén értelemszerűen az alapértelmezetten hozzárendelt program indul - txt-nél pl. a NotePad és így tovább.