Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Excel konzultáció 2. Előadás Dr. Pauler Gábor, egyetemi docens, ev.

Hasonló előadás


Az előadások a következő témára: "Excel konzultáció 2. Előadás Dr. Pauler Gábor, egyetemi docens, ev."— Előadás másolata:

1 Excel konzultáció 2. Előadás Dr. Pauler Gábor, egyetemi docens, ev.
Adószám: Számlaszám: Telephely: 7666 Pogány, Széchenyi u. 1. Tel: 30/

2 Az előadás tartalma Az Excel alapvető objektumai OOP alapfogalmak
Az Excel objektum hierarchiája vázlatosan Az alkalmazás beállításai Munkalapok és formázásuk Oldalbeállítások Cellastílusok Cellazárolás és munkalap védelem Cellák formázása Input cellaformázások Stílus- és számformázások Értékhatáros validáció, figyelmeztetés, hibaüzenet, súgó megjegyzésben Értéklistás validáció vs. legördülő listás ActiveX vezérlők használata Részeredmény/ellenőrzés cellaformázások Ellenőrzés/hibaüzenet cellafüggvénnyel Feltételes formázások használata Output cellák formázása Gradiens cella-háttérszínek feltételes formázással Gyakorlati alkalmazások Adatáram-alapú felhasználói felület vezérlőkből és rajzelemekből Feltételes cellaformázások, cellák közti irányított gráfok rajzoltatása Ferde táblázatok rajzoltatása, minta felhasználói felület Szakirodalom

3 Az Excel alapvető objektumai 1
Az MS Excel – mint minden modern szoftver – objektum-orientált (Object Oriented Programming, OOP) szerkezetű. Mielőtt rátérnénk az Excel objektumaira, tisztázzuk az OOP alapfogalmait: Az objektum (Object) a szoftver egy adott alrendszerét, funkcionalitását kezelő modul, adott egyedi azonosítóval ellátva. Pl. Az Excel egy munkalapja. A célja hogy egy komplex szoftver több sornyi kódját áttekinthető méretű egységekre bontsa. 2 lépcsőben jelenik meg: Az osztály (Class) egy adott fajta objektum szerkezeti definíciója, amely nem foglal erőforrásokat, nem működőképes, ez csak egy „terv” ami alapján sorozatban gyárthatunk működő objektumokat Pl. az Excel munkalap objektum osztály: WorkSheet A példány (Instance) adott osztály egy konkrét objektum előfordulása a neki kiosztott memóriaterület-, és processzoridő erőforrásokkal. Pl. Excel munkalap típusú objektumokból sok lehet egy munkafüzetben, ezek egy példánya lehet a költségek munkalap: WorkSheets(„Költségek”). Több, azonos osztályhoz tartozó objektum-példány listáját kollekciónak (Collection) nevezzük. Pl. egy munkalapon több diagramm lehet, az egy munkalaphoz tartozó diagramm objektumok kollekciót alkotnak Az objektumoknak tulajdonságaik (Property) vannak, amelyek adott nevű (Name), tipusú (Type), értékhatárú (Range) változók, adott értékekkel (Value), az objektumhoz tartozó programkód működését befolyásolják. Pl. a munkalap zárolás tulajdonságának igaz értékre állítása úgy változtatja meg a működését, hogy nem hagyja szerkeszteni a védett cellákat: WorkSheets(„Költségek”).Locked = True A tulajdonságok több szinten egymásba ágyazhatók (Embedding). A beágyazásjelölő a „.”: Pl.: a költségek munkalap 3. sor, 4. oszlopának cellájának értéke: WorkSheets(„Költségek”).Cells(3,4).Value

4 Az Excel alapvető objektumai 2
A tulajdonságok lehetnek csak olvashatók (Read Only) vagy írhatók (Writable), aszerint, hogy az objektum csak visszaad bennük értékeket, vagy az értékeik által az objektum működése befolyásolható Egy objektumnak több metódusa (Method) lehet, amelyek olyan programkódok, melyek működését az objektum tulajdonságai, illetve bizonyos, minden objektum által hozzáférhető globális változók (Global Variable) befolyásolják Pl. az összes megnyitott munkafüzet munkalapjainak újraszámolása: Application.Calculate Egy metódus lehet nyilvános (Public), amit az objektumon kívülről is meg lehet hívni, és privát (Private), ami belső használatú, az objektumon kívülről nem hívható Az objektumok a külvilág fele zártak (Encapsulation): csak a tulajdonságaik módosításával, és nyilvános metódusaik meghívásával befolyásolható a működésük, kívülről nem írhatunk/olvashatunk a kiosztott memóriaterületükön, és nem módosíthatjuk metódusaik kódját. Erre azért van szükség, hogy nyomon követhető legyen egy programkód változás hatása, vagy egy programhiba helye, egy nagyon bonyolult kódrendszerben is Az objektumok öröklési kapcsolatban (Inheritance) állnak egymással: egy bonyolultabb leszármazott/gyerek objektum (Descendent/Child Object) beágyazva tartalmazhat maximum 1db. egyszerűbb ős/szülő objektumot (Ancestor/Parent), és maga is része lehet több, korlátlan számú még bonyolultabb objektumnak. A leszármazott objektum hozzáfér a az ős tulajdonságaihoz és metódusaihoz, fordítva ez nem igaz. A leszármazások többszintű rendszerét objektum hierarchiának (Object Hierarchy) nevezzük, ez egy olyan fa, aminek a gyökerénél egyszerű ős objektumok, ágainál bonyolult leszármazott objektumok vannak. Pl. egy cellatartomány (Range) objektum, mint leszármazott, tartalmazza az egyszerűbb cella (Cell) ős objektumot

5 Az Excel alapvető objektumai 3
Az MS Excel objektum-hierarchiája – igen vázlatosan – lentről felfele így néz ki: A legbonyolultabb, legösszetettebb, leszármazott objektum az alkalmazás (Application) objektum, ami magát az Excelt jelenti Egy alkalmazás több megnyitott munkafüzet (Workbook) objektum kollekcióját tartalmazhatja, amellett, hogy vannak más rész-objektumai is, mint pl. a cellafüggvények (WorkSheetFunction) Egy munkafüzet több munkalap (WorkSheet) objektum kollekcióját tartalmazza, de emellett lehetnek más rész-objektumai is, mint pl. az Excel kimutatások adattároló (PivotCache) objektum kollekciója Egy munkalap cellatartomány (Range) objektumok kollekció- jából áll, de emellett tartalmaz- hatja diagramm (Chart) objektu- mok vagy kimutatás (PivotTable) vagy nyomógomb (Command- Button) objektumok kollekcióját Egy cellatartomány cella (Cell) objektumok kollekciója Minden szinten a kollekciókból„Active” jelöli az éppen kijelölt aktuális objek- tumot: ActiveWorkBook, ActiveSheet, ActiveRange, ActiveCell

6 Az alkalmazás alapbeállításai:
Az alábbi alapbeállításokat érdemes az Excel alkalmazás szintjén megtenni, mielőtt még belefognánk bármely munkafüzet szerkesztgetésébe: Eszközök|Beállítások (Tools|Options) menüben: Az Általános (General) fülön: A Lapok száma (Number of Worksheets) = 1. Ne tegyünk feleslegesen üres lapokat a munkafüzetbe, mert a tapasztalatlan felhasználó véletlenül átvált egy üres lapra és sosem talál vissza! Normál betűtipus (Default Font) = Arial Narrow, 8pont. Az alapértelmezett MS Sans Sherif 10p betűtipus ugyanis nem elég kompakt nagy táblázatol 1 képernyőn megjelenítéséhez A Szerkesztés (Edit) fülön: Az ENTER után továbblép (Step on ENTER) beállítást inaktiváljuk, mert az nagyon zavaró fejlesztés közben A Biztonság (Security) fülön: A Makróbiztonság (Macro Security) nyomógombbal előugró Biztonság (Security) ablakban a Biztonsági szint (Security Level) fülön válasszuk ki az Alacsonyt (Low). Különben nem leszünk képesek makróinkat futtatni katt katt katt

7 Az előadás tartalma Az Excel alapvető objektumai OOP alapfogalmak
Az Excel objektum hierarchiája vázlatosan Az alkalmazás beállításai Munkalapok és formázásuk Oldalbeállítások Cellastílusok Cellazárolás és munkalap védelem Cellák formázása Input cellaformázások Stílus- és számformázások Értékhatáros validáció, figyelmeztetés, hibaüzenet, súgó megjegyzésben Értéklistás validáció vs. legördülő listás ActiveX vezérlők használata Részeredmény/ellenőrzés cellaformázások Ellenőrzés/hibaüzenet cellafüggvénnyel Feltételes formázások használata Output cellák formázása Gradiens cella-háttérszínek feltételes formázással Gyakorlati alkalmazások Adatáram-alapú felhasználói felület vezérlőkből és rajzelemekből Feltételes cellaformázások, cellák közti irányított gráfok rajzoltatása Ferde táblázatok rajzoltatása, minta felhasználói felület Szakirodalom

8 A munkalapok (WorkSheet) formázásai 1
Egy Excel munkalap jóval bonyolultabb objektum, mint bármely 4GL programnyelv, adatbáziskezelő űrlapjai (Form): Egyetlen cellája betöltheti input vezérlőelem (szövegdoboz, listadoboz), számításokat végző, esetleg bonyolultabb makró kódokat meghívó objektum, és outputokat kijelző vezérlőelem szerepét is  Ennek az az előnye, hogy Excelben jóval gyorsabban és rugalmasabban alakíthatók ki bonyolultabb grafikus felhasználói felületek (Graphic User Inteface, GUI), mint a fent említett eszközökben, bár azzal a megkötéssel, hogy az Excel munkalap-alapú GUI igen korlátozottan alkalmas csak megosztott vagy webes használatra  A hátránya viszont, hogy a sok lehetséges formázást sokkal könnyebb összekutyulni, mint máshol. Ezért bizonyos formázási szabályok betartása nemcsak esztétikai szempontok miatt fontos, hanem megakadályozza, hogy a fejlesztő belezavarodjon saját művébe, illetve a felhasználó számára áttekinthetetlenné, használhatatlanná váljon 2-1.PÉLDA: Mindig bosszantó olyan minisztériumi sajtótájékoztatót látni a híradóban, ahol sok-sok millió forintért sógor/koma/rokon „szakértők, tanácsadók” által elkészített tanulmányok prezentációjakor hányadék, alap formázásokat, cellarácsokat tartalmazó, olvashatatlan Excel diagrammokat mutogatnak, és a tévések hiper-szuper zoom kameraállítgatással próbálják kivenni, mivel is vakítják éppen a magyar parasztot. Ez szegénységi bizonyítvány a minisztériumi döntéselőkészítés informatikai hátteréről.

9 A munkalapok (WorkSheet) formázásai 2
Hogy képernyőn és nyomtatva is jó legyen: Eszközök|Beállítások|Megjelenítés (Tools|Options|Appearance) fülön: Oldaltörések (Page break) bekapcs Cellarácsok (Cell grid) kikapcs Fájl|Oldalbeállítás|Margók (File|Page Setup|Margins) fülön: Minden oldalon 0.5cm margó 0cm élőfej/élőláb (Header/Footer) Igazítás (Alignment) középre Mivel a celláknak rengeteg beállítása van, célszerű a Formátum|Stílus (Format| Style) menüvel cellastílusokat definiálni, így nem kell mindig mindent kézzel for-mázni, hanem stílust rendelünk a cellához Módosítás (Modify) gombbal módosít-hatjuk a Normál (Normal) stílust Hozzáadás (Add) gombbal adhatunk új nevet neki és kerül bele a stílus listába A következő stílusokat érdemes létrehozni (csak a Normál-tól eltéréseiket írjuk le): Input, Paraméter, Részeredmény, Output, Konstans, Becslés szám típusú cellák 2 tizedes jeggyel, az első kettő nem zárolt, hogy a felhasználó bele tudjon írni ha a munkalap védett lesz, akkor is Háttérszíneik automatikusan jelzik a fel-használónak a cella funkcióját A VáltozóID nevesített cellatartományok (Named Range) neveit tárolja, mivel hosszabb nevek lehetnek, 6p -os betűméretet kap, és víz- szintesen/függőlegesen közép- re igazítjuk, csak szöveg lehet katt katt katt katt katt katt

10 A munkalapok (WorkSheet) formázásai 3
Habár az Excel külön is képes kezelni fejlécet/láblécet, ezt ne használjuk, mert nyomtatásnál rátakarhat a lap tartalomra, és nem használhatunk cella függ- vényeket összeállításához. Ezért a munkalap tetején mindig felve-szünk egy fejléc sort, ami a készítési dá-tumot, címet, szerző nevét tartalmazza Az alatta lévő sor a jelmagyarázat, ami a különböző stílusú cellák funkcióját mutatja Ez után az első munkalaprész címe jön A sorok/oszlopok magasságát (alapban:10.8 pont/ 8.5 karakter) igyekszünk nem na-gyon változtatni, mert ha a munkalap egy részét át kell másolni más munkalapra, így nem kell átigazítgatni az egészet: Ha mégis változtatjuk, az egész munka-lapra a Munkalap kijelölő gombra kat-tintva a Formázó|Sor/Oszlop|Magasság (Format|Row/Column|Height)-el lehet Ha csak 1 helyen kell szélesebb cella 8.5 karakternél,használjuk a Nézet|Eszközök |Formázás (View|Toolbars|Formatting) Cellaegyesítés(Merge Cells) gombját A fentieket lásd a 2-1MintaMunkalap.xls-ban. Mindig ezt a munkalapot másoljuk át új munkalap létrehozásakor Szerkesztés| Lap áthelyezése/másolása (Edit|Move/ Copy sheet) menüvel, így sok formázási kézimunkát megtakaríthatunk: Munkafüzet (Workbook): hova tegye, Melyik lap elé (Before sheet), Legyen másolat (Copy sheet) katt katt katt katt katt katt katt katt Az Eszközök|Védelem|Lapvédelem(Tools| Protection|Worksheet) menüvel érhetjük el, hogy a felhasználó ne írhasson zárolt cellák-ba (pl. ne ronthassa el a számoló cellákat). Ugyanitt a Zárolt cellák kijelölése (Select locked cells) kikapcsolásával elérhet-jük, hogy vágólapon másolni se tudjon belőle De ne zárjunk le feleslegesen dolgokat a munkalapon,és hagyjunk 1 nyitott,üres részt, hogy a felhasználó esetleg hozzáírhassa a saját dolgait, mert ez az Excel nagy előnye más más rendszerek űrlapjaival szemben!!! Amíg fejlesztünk, addig nem zárjuk a munka-lapot, majd 1 fejlesztői jelszót (Password) adunk meg a zárásra. Vigyázat, a jelszó nem 128bit-es titkosítású, Keygenekkel törhető!

11 A munkalapok (WorkSheet) formázásai 4
Ha azt szeretnénk, hogy egy cellát ne is láthasson a felhasználó, Formázás|Sor/ Oszlop/Lap|Elrejtés (Format|Row/Co-lumn/Sheet|Hide) menüvel tegyük rejtett sor-/oszlop-/lapra Ott minden ugyanúgy fog működni, mint addig, kivéve, hogy rejtett cellák adatait nem akarja diagrammon megjeleníteni De ha a diagrammra kattintva az Eszkö-zök|Beállítások|Diagram(Tools|Options |Diagram) menüben kikapcsoljuk a Csak látható cellát (Only visible), akkor igen Az Eszközök|Védelem|Füzetvédelem (Tools|Protection|Workbook) menünél fejlesztői jelszó (Password) beállításá-val zárhatjuk, hogy a felhasználó ne tud-jon rejtett lapot felfedni, újat hozzáadni Ha az alkalmazásunk több felhasználós lesz, akik más és más részeihez férhetnek hozzá,az Eszközök|Védelem|Tartomány (Tools|Protection|Range) menünél Meg -adunk Címmel(Title) ellátott, jelszóval (Password) védett hivatkozásokat (Re-ference), tartományokra, amit csak a jel-szó birtokosa módosíthat, más nem Nem megoldott a munkafüzeten belül, hogy 1 felhasználó csak 1 lapot láthasson Vannak olyan esetek, amikor egy cella nem zárható le, mert makró vagy ActiveX ve-zérlő ír bele értéket (zártan nem tudja), de mégsem szeretnénk, hogy a felhasználó elronthassa. Ekkor a Nézet|Eszöz| Raj-zoló|Téglap (View|Toolbar|Draw|Rec-tangle)-vel egy téglalapot rajzolunk fölé, katt katt katt katt katt katt katt katt katt amit átlátszóra és zároltra állítunk, így megvédi! katt katt katt katt katt katt

12 A munkalapok (WorkSheet) formázásai 5
Mint minden MS Office termékben, az Excelben is a védelem legfelső szintje az Eszközök|Beállítások|Biztonság (Tools|Options|Security) menüből elérhető dokumentum-védelem. Vigyázzunk rá, hogy az alapértelmezett jelszavas kódolás (Office97/2000) könnyen törhető, de Speciális (Special) gombbal választhatunk bonyolultabbat 2-1.Gyakorló feladat: több felhasználós GUI Hogyan tudná mégis megoldani Excel-ben, hogy minden felhasználó csak a saját munkalapját láthassa? (Pl. A külön-böző lapokon olyan adatok vannak, amit 1 cég különböző osztályai még egymás elől is titkolnak pl. elvesztett fogyasztók (Lost Customers, Churn) A megoldás: 2-1GyakorloMegoldas.zip katt S..fej! Hü.._..csa!

13 Az előadás tartalma Az Excel alapvető objektumai OOP alapfogalmak
Az Excel objektum hierarchiája vázlatosan Az alkalmazás beállításai Munkalapok és formázásuk Oldalbeállítások Cellastílusok Cellazárolás és munkalap védelem Cellák formázása Input cellaformázások Stílus- és számformázások Értékhatáros validáció, figyelmeztetés, hibaüzenet, súgó megjegyzésben Értéklistás validáció vs. legördülő listás ActiveX vezérlők használata Részeredmény/ellenőrzés cellaformázások Ellenőrzés/hibaüzenet cellafüggvénnyel Feltételes formázások használata Output cellák formázása Gradiens cella-háttérszínek feltételes formázással Gyakorlati alkalmazások Adatáram-alapú felhasználói felület vezérlőkből és rajzelemekből Feltételes cellaformázások, cellák közti irányított gráfok rajzoltatása Ferde táblázatok rajzoltatása , minta felhasználói felület Szakirodalom

14 Cellák formázása: Input cellaformázások 1
(A következőkben egyedi, kis számú input vagy paraméterértékek celláinak formázásáról lesz szó, tömeges inputok adatbázisszerű kezelésével az Adatok| Űrlap (Data|Form) menü foglalkozik, amit a Lesson3–ban tárgyalunk) A 2-1CellaMinta.xls fájl cellák formázá-saira mutat példát egy kicsi kis minta alkalmazás keretében: a felhasználó paraméterként megadhatja hogy hány nap van átlagosan egy hónapban, negyedévben, évben, és ezzel végzünk számításokat (ez a rész minden olyan alkalmazásban megtalálható, ami időben előre tervez hosszabb folyamatokat, pl. munkaerő-gazdálkodás) Az input/paraméter cellát elsőként For-mátum|Stílus (Format|Style) menüvel ráállítjuk Paraméter stílusra. Mindig rakjunk elé leírást (Description), és ha van, utána mértékegységet (Measure Unit), majd a sor elejére VáltozóID stílusú cella(tartomány)nevet (Range Name) teszünk, amely egyedi legyen az egész munkalapon (a Lesson2–ben ki fog derülni, miért hasznos ez) Ha az input/paraméter szám, ne felejtsük el a celláját kijelölve Formátum|Cella| Szám (Format|Cell|Number) menüvel beállítani a Tizedeshelyeket (Decimals) és az Ezres elválasztót (Thousand separator). A munkalap használhatatlan, áttekinthetetlen, ha a cellák tizedespont-jai nincsenek igazítva!!! katt katt katt katt katt

15 Cellák formázása: Input cellaformázások 2
Minden rendszer input elemeinek funkciója, hogy kiszűrjék az érvénytelen értékeket: A cellák formátuma önmagában nem kötelező érvényű: szám vagy dátum típusú cella simán elfogad szöveget is!!! Kötelező érvényesítést a cellát kijelölve Adatok|Érvényesítés (Data|Validate) menüvel lehet definiálni.A Beállításoknál: Megengedve:Szám,Dátum,Szöveg… Jelleg:<,>,<=,>=,között Min,Max:értékhatárok Üres cella mellőz: ha a felhasználó rosszat vitt be, Esc-vel vagy üresen hagyással léphet ki A Hibajelzésnél rossz kitöltésnél felbuk-kanó rendszer-hibaüzenetet adunk meg A Figyelmeztetésnél egy tájékoztató üzenetet a megengedett értékekről, ami a cellára kattintva jön elő A „Quarter|Negyedév” (PeriodQuarter) cellá-nál arra látunk példát, amikor figyelmez-tetés helyett Beszúrás|Megjegyzés (In-sert|Comment) menüvel egér ráhúzásra előugró súgót adunk meg. Ez jobb, mert: Eltűnik beírás közben, nem takar mást A figyelmeztetéstől eltérően, formázható: Jobkatt cellán|Megjegyzés szerkesztés Nézet|Eszköz|Rajzol|Háttérszín,árnyék Duplakatt szövegdobozon|Margó=0cm, Betűtípus=Arial Narrow 8p, Szín=Kék Ezen cellánál az Adatok|Érvényesítés|Be-állitások (Data|Validate|Settings) menü-ben nem fix értékhatárokat adtunk meg, hanem másból kiszámított cellaképletek! Sajnos, a hibaüzenet szöveget nem tudja cel-la függvényből, így nem paraméterezhető katt katt katt katt katt katt katt katt katt katt húz katt jobb kat kat- katt katt katt katt katt

16 2-2.Gyakorló feladat: Beviteli ellenőrzés
A 2-1CellaMinta.xls fájlban „Year|Év” beállításra (PeriodYear) állítsa be a következő ellenőrzéseket: Legalább a hónap átlagos napszámának 12×-ese legyen Maximum a negyedév átlagos napszámának 4×-ese A követelményeket hozza a felhasználó tudomására megfelelő hibaüzenet, és megjegyzés súgó segítségével! A megoldás: 2-2GyakorloMegoldas.xls 2-1.Szorgalmi feladat: egy makróval megpróbálhatja paraméterezhetővé tenni a hibaüzenetet (segítség: gondolkodjon, hol egyszerűbb összeállítani egy hibaüzenet szöveget: MS Office Visual Basic-ben, vagy cellafüggvényként?) A megoldás: 2-1SzorgalmiMegoldas.xls

17 Cellák formázása: Input cellaformázások 3
Bizonyos input celláknál (pl. „Calendar|Nap-tár” (CalendType) értékek listájából kell legördülő menü segítségével választani: Az egyszerűbb, gyorsabb módszer erre a cellát kijelölve Adatok|Érvényesítés|Be-állításoknál (Data|Validation|Settings): Megengedve=Lista, Legördülő lista Forrás=sor vagy oszlop cellatarto-mány a lista értékeivel, érdemes rej-tett sorban/oszlopban elhelyezni Menügomb csak cellán állva látszik A cellát lemásolva, a menü is jön vele A forrás lehet sorban vagy oszlop-ban, de csak ugyanazon a lapon!!! A forrás tartalmazhat cellafüggvényt A hosszadalmasabb, de nagyobb tudású eszköz erre az ActiveX vezérlők (Control): A Windowsba települő önálló objektu-mok (Object).Tervező módnál(Design Mode) a tulajdonságaik (Property) szerkeszthetők (Property Editor), fut-tatási módban (Runtime Mode) az így beállított metódusaik(Method) futnak: pl.szövegdoboz,legördülő lista, média lejátszók (ezeket a Win MediaPlayer vagy RealPlayer telepíti Windowsba) Nézet|Eszköz|Vezérlő|Kombi lista (View|Tools|Controls|Combo box) kattint, kihúzza helyét az input cellára gombra jön a Property Editor ablak BackColor(háttér)=sárga BorderStyle(keret)=single(1×es) SpecialEffect=Flat(lapos kép) MatchReq=True(csak listaelem beírását fogadja el) SelMarg=False(nincs bal margó) katt katt katt katt katt katt katt húz katt katt

18 Cellák formázása: Input cellaformázások 4
További beállítások a Property Editor ablakban: LinkedCell:az input cella, amibe visszateszi a kiválasztott elemet a legördülő listából, nem lehet zárolt(Locked) cella!!! ListFillRange:lista adatforrás cellatartomány: Csak oszlopban lehet, de bármely lapon Nem lehetnek benne üres/ismétlődő elemek, mert fagyasztja az Excelt!!! Lehet több oszlopa, ahol az 1. az érték oszlop, a többi magyarázat (pl. a felhasz-náló számkódokat választhat listából, de lássa mellettük a jelentésüket: 1:férfi, 2:nő) Az 1. sorban lehetnek oszlopnevek A fentiek abszolút hivatkozások:ha lemáso-lom a vezérlőt vágólapon más cellára, az eredeti cellákra mutatnak, át kell írni őket! BoundColumn:a forrás értékoszlop sorszáma ColumnCount:hány oszlop van a forrásban ColumnHeads:van-e oszlopnév a forrásban ColumnWidths:oszlopok mutatott szélessége ListWidth:teljes listaszélesség, pixelben ListRows:hány sor legyen, hosszabbat görgeti Font=Arial Narrow, 8p: betűtípus ListStyle=fmListStylePlain:1 elemet lehessen csak kiválasztani. Más alkalmazásnál lehet többszörös választós, de akkor a bal margót be kell kapcsolni, mert ott jelzi a kiválasztást!!! Text:kiválasztott elem, mindig szöveg tipusú!!! Enabled=True:aktív, különben nem működik Locked=True:lezárva, a felhasználó használ-hatja, de nem szerkesztheti vagy húzhatja el, ezért tesszük a védetlen input cella tetejére!!! Name:programozási név, minden ActiveX vezérlőt teljesen programozni lehet makróból Office Visual Basic objektumként! A futtatásához gombbal váltsunk futtatási módba katt katt katt katt katt

19 Az előadás tartalma Az Excel alapvető objektumai OOP alapfogalmak
Az Excel objektum hierarchiája vázlatosan Az alkalmazás beállításai Munkalapok és formázásuk Oldalbeállítások Cellastílusok Cellazárolás és munkalap védelem Cellák formázása Input cellaformázások Stílus- és számformázások Értékhatáros validáció, figyelmeztetés, hibaüzenet, súgó megjegyzésben Értéklistás validáció vs. legördülő listás ActiveX vezérlők használata Részeredmény/ellenőrzés cellaformázások Ellenőrzés/hibaüzenet cellafüggvénnyel Feltételes formázások használata Output cellák formázása Gradiens cella-háttérszínek feltételes formázással Gyakorlati alkalmazások Adatáram-alapú felhasználói felület vezérlőkből és rajzelemekből Feltételes cellaformázások, cellák közti irányított gráfok rajzoltatása Ferde táblázatok rajzoltatása, minta felhasználói felület Szakirodalom

20 Cellák formázása: Részeredmények és ellenőrzésük
katt katt =HA(VAGY($E$14<365*4;$E$14>365*4+1);"ERROR|HIBA: It should be between 365×4 and 365×4+1|365×4 és 365×4+1 közé kell essen!";"") A részeredményeket tartalmazó cellákat Formátum|Stílus (Format|Style) menüvel ráállítjuk Részeredmény stílusra. Gyakran van szükség olyan összetett ellenőrzésekre, amelyek az egyedi inputok szintjén nem ejthetők meg, mert több input közti szabály (Rule), matematikai összefüggés írja le A szabály cellafüggvényét tartalmazó részeredmény cella értékét ellenőrizni kellene Ehhez azonban a cella adat-validációja nem használható, mert az csak a cella kitöltésekor lép működésbe, frissülésekor nem! Pl. Hiába lép ki a felső részeredmény cella a validáció értékhatárából, mégsem keletkezik semmi hibajelzés Ezért az ellenőrzést saját cellafüggvénnyel generált hibaüzenettel old- juk meg, az üzenet cellát VáltozóID stílusúra formázván: = Ha(Feltétel;IgazRész;HamisRész) =If(Condition,True,False) A feltételben lehet És/Vagy(Kif1;Kif2;…) And/Or(Expr1,Expr2,…) Az üres cellaérték (Empty string) jelölése: ”” A részeredmény-cellában is jelezhetjük a hibát Formátum|Feltét. for- mázás (Format|Conditional Formatting) menüvel, ahol a cella mind statikus, vagy képlettel számított értékére változatos, függvénnyel para- méterezhető feltételt adhatunk,Formátum(Format)gombbal formázzuk katt katt katt katt katt

21 Cellák formázása: Outputok
katt Az egyszerű, egyedi outputokat tartalmazó cellákat Formátum|Stílus (Format|Style) menüvel ráállítjuk Output stílusra. Ha az output nem egyedi, hanem tö-meges, pl. nagy-nagy számtáblázatot alkotó sok-sok cella, amiket még egy nagy diagrammon sem lehet jól kivehetően megjeleníteni, felvetődhet az igény, hogy az áttekinthetőség kedvéért maga az eredménycella formázása (pl. alapszínek fokozati skálájával (Color Gradient) is utaljon a benne lévő érték nagyságára Ezt a feltételes formázás több feltételes változatával lehet elérni, amikor a Hozzáadás (Add) gombbal max. 3 formázó feltételt állíthatunk be Szándékos Excel-lebutítás: Természetesen, sokkal jobb lenne, ha több színfokozatot (8..10) is definiál-hatnánk Erre elvileg lehetőség is lenne, mivel a feltételes formátum objektumok a cella objektumba ágyazott kollekciót alkotnak, ami bővíthető Azonban a kollekció létszámát 3-ra korlátozták, és még makróból, Visual Basic kóddal sem lehet hozzáadni több formázást!!! katt 2-2.Szorgalmi feladat: tegye lehetővé a cella-szintű 10 fokozatú automatikus háttérszín-formázást, az érték nagyságától függően, minél egyszerűbb módszerrel! Segítség: Think outside the box (cell)!! A megoldás: 2-2SzorgalmiMegoldas.xls

22 2-3.Gyakorló feladat: Legördülő listák, feltételes adatvalidáció
A, Oldja meg, hogy 2 különböző munkalapon elhelyezkedő input cella legördülő listás adatvalidációja ugyanabból a listából dolgozhasson! (pl. Településtípus: Tanya, Kisközség, Nagyközség, Kisváros, Nagyváros, Budapest) A megoldás: 2-3AGyakorloMegoldas.xls B, Oldja meg, hogy egy legördülő listás ActiveX vezérlő adatforrás listája változó hosszúságú lehessen, és ne fagyjon el az üres értékek miatt, ha a lista épp nincsen teljesen feltöltve! (pl. egy input cellában vegyen be egy közti értéket. A legördülő listában pedig ennek megfelelő számú hónap közt lehessen választani: pl. 3:Jan..Mar, 5:Jan..May, stb.) A megoldás: 2-3BGyakorloMegoldas.xls C, Austin Powers kedvenc Excel fájlja: egy munkalapon kérje be a felhasználó nemét (Male/Female), majd a péniszméretét, inchben (tört, ). De ha az illető nő, ne lehessen 0-nál nagyobb péniszméretet megadni. Majd kérje be a megkívánt péniszméretet (tört, a tényleges közt lehet). Adjon javaslatot egy eredménycellában a megfelelő pénisznövelő eszközre (Penis Enlargement Device) az elérendő növekmény függvényében: 0..1: zsírégető fogyókúra (Fat Burning Diet) <1..2: vákuumszívó (Vacum Pump) <2..3: pénisz pirulák (Penis Pills) <3..15: pénisz protézis (Penis Prothesis) A megoldás: 2-3CGyakorloMegoldas.xls

23 Az előadás tartalma Az Excel alapvető objektumai OOP alapfogalmak
Az Excel objektum hierarchiája vázlatosan Az alkalmazás beállításai Munkalapok és formázásuk Oldalbeállítások Cellastílusok Cellazárolás és munkalap védelem Cellák formázása Input cellaformázások Stílus- és számformázások Értékhatáros validáció, figyelmeztetés, hibaüzenet, súgó megjegyzésben Értéklistás validáció vs. legördülő listás ActiveX vezérlők használata Részeredmény/ellenőrzés cellaformázások Ellenőrzés/hibaüzenet cellafüggvénnyel Feltételes formázások használata Output cellák formázása Gradiens cella-háttérszínek feltételes formázással Gyakorlati alkalmazások Adatáram-alapú felhasználói felület vezérlőkből és rajzelemekből Feltételes cellaformázások, cellák közti irányított gráfok rajzoltatása Ferde táblázatok rajzoltatása, minta felhasználói felület Szakirodalom

24 Gyakorlati alkalmazások 1: Többszörös kiválasztós és legördülő listák 1
A NeuroFuzzySystem.xls fájl Estimate munkalapján egy Neuro-Fuzzy matematikai becslési rendszer GUI-jának kialakítására látunk példát: Többszörös választós listákban választhatjuk ki a rendszer input/ közbenső(Intermedier)/ output változóit A kék nyilak egérrel történő behúzásával a felhasználó összekötheti őket az inputokból outputokat előállító szabálybázist (Rule Group)-ot kiválasztó legördülő listával A felhasználó érthetetlen képletek/parancsok helyett egy gráfként legózhat össze egérrel egy bonyolult rendszert. Ez az adatáram-alapú felhasználói felület (Stream-based GUI)

25 Gyakorlati alkalmazások 1: Többszörös kiválasztós és legördülő listák 2
'Scanning connection arrow drawings For Each Arrow In .Drawings 'Determine head and starting cell of arrow drawing If Arrow.Left = Arrow.Vertices(5, 1) Then HCC = Arrow.TopLeftCell.Column SCC = Arrow.BottomRightCell.Column Else HCC = Arrow.BottomRightCell.Column SCC = Arrow.TopLeftCell.Column End If If Arrow.Top = Arrow.Vertices(5, 2) Then HCR = Arrow.TopLeftCell.Row SCR = Arrow.BottomRightCell.Row HCR = Arrow.BottomRightCell.Row SCR = Arrow.TopLeftCell.Row 'Examining head cell of the arrow drawing 'Is there any variable set listbox? HL = 0 For I = 1 To .ListBoxes.Count If (HCR >= .ListBoxes(I).TopLeftCell.Row) And _ (HCR <= .ListBoxes(I).BottomRightCell.Row) And _ (HCC >= .ListBoxes(I).TopLeftCell.Column) And _ (HCC <= .ListBoxes(I).BottomRightCell.Column) Then HL = I Next I 'Is there any rule group dropdown? HD = 0 For I = 1 To .DropDowns.Count If (HCR >= .DropDowns(I).TopLeftCell.Row) And _ (HCR <= .DropDowns(I).BottomRightCell.Row) And _ (HCC >= .DropDowns(I).TopLeftCell.Column) And _ (HCC <= .DropDowns(I).BottomRightCell.Column) Then HD = I 'Examining starting cell of the arrow drawing SL = 0 If (SCR >= .ListBoxes(I).TopLeftCell.Row) And _ (SCR <= .ListBoxes(I).BottomRightCell.Row) And _ (SCC >= .ListBoxes(I).TopLeftCell.Column) And _ (SCC <= .ListBoxes(I).BottomRightCell.Column) Then SL = I SD = 0 If (SCR >= .DropDowns(I).TopLeftCell.Row) And _ (SCR <= .DropDowns(I).BottomRightCell.Row) And _ (SCC >= .DropDowns(I).TopLeftCell.Column) And _ (SCC <= .DropDowns(I).BottomRightCell.Column) Then SD = I If (HD > 0) And (SL > 0) Then Connections(HD, SL) = 1 ‘Register Input connection If (SD > 0) And (HL > 0) Then Connections(SD, HL) = 2 ‘Register Output connection Next Arrow Érdekességként bemutatjuk a GUI-t mű-ködtető makró kódot: Egy ciklus végigszalad a munkalap Nézet|Eszköz|Rajzoló|Szabadkézi sokszög eszközzel definiált nyilain: WorkSheet.Drawings.Arrow A listák/legördülők itt nem ActiveX kontrollok, hanem a munkalap saját objektumai, amiket a Nézet|Eszköz| Űrlapok|Legördülő/Lista doboz (View| Tools|Form|DropD/Listbox) menüvel lehet előcsalogatni: WorkSheet.ListBoxes(Sorsz) WorkSheet.DropDowns(Sorsz) Mind a nyilaknak és a listáknak van olyan tulajdonsága, amiben meg lehet kapni, hogy az ábrájukat befoglaló téglalap sarkai melyik sor-ban/oszlopban lévő cellába esnek: .Top[Bottom]Left[Right] Cell.Row[Column] A nyilaknál annyi a bonyolultság, hogy fel kell deríteni, hogy a bennfoglaló téglalapban a nyíl éppen merre áll, ezért lokális változókba kivarázsoljuk a nyíl funkcionális részeinek cella-koordinátáit: HCR[C]:hegy sor/oszlop SCR[C]:kezd sor/oszlop Utána minden nyíl hegy/kezd cellá-jára megvizsgáljuk, beleesik-e listába vagy legördülőbe (HD,SD,HL,SL) Az eredményt a Connections tömbben tároljuk

26 Gyakorlati alkalmazások 2: Feltételes cellaformázás 1
A NeuralNet2.xls fájl egy 8 karaktert a beszkennelt kép pixeleinek X,Y koordinátáiból felismerő mesterséges idegsejt hálózat működését mutatja be a hálózati gráfon és az idegsejtek jelzési eredmény diagrammjain keresztül. Az összeköttetési súlyokat tároló cellák a szemléletesség kedvéért piros, kék, fehér alapszínre vannak feltételesen formázva, aszerint, hogy pozitív/negatív/0-közeliek

27 Gyakorlati alkalmazások 2: Feltételes cellaformázás 2
Érdekességképpen megjegyezzük, hogy itt a rengeteg nyilat nem rajzobjektumok segítségével rajzoljuk ki, mert az még makróval is macerás lenne Ehelyett az Excel azon szolgáltatását használjuk fel gonosz célokra, hogy az Eszközök|Képletvizsgálat|Elődök mutatása (Tools|Formula analyzer| Show precedents) menü segítségével nyilakat húz egy képletet tartalmazó cellába az általa meghivatkozott cellákból A nyilak hegyénél lévő cellák semmi mást nem tartalmaznak, mint egy hivatkozást a kiinduló oldali cellára, így épül fel a háló A Csatolások Újrarajzolása nyomó-gombra tett egyszerű kis makró pedig végigszalad az összes hegy-oldali cellán, és bekapcsolja az elődök mutatását, mert ez a beállítás a munkalap minden módo-sulásakor érvényét veszti, de így 1 gomb-nyomásra újrarajzolja a hálózatot Az I,J,K ciklusok csak arra valók, hogy szépen végiglépegessen a szükséges cellákon, de a lényeg a Cell.Show Precedents metódus meghívása! =O31 With ActiveSheet For I = 0 To 3 For J = 0 To 7 For K = 0 To 7 If_ .Cells(I*25+20,J*13+5+K).Formula <> "" Then_ .Cells(I*25+20,J*13+5+K).ShowPrecedents End If Next K Next J Next I End With

28 Gyakorlati alkalmazások 3: Feltételes cellaformázás/ferde táblázatok
A NeuralNet1.xls fájl arra mutat példát, hogy egy nagyobb eredménytáblázatból hogyan emelhetők ki a jelentősebb értékek gradiens alapszínezésű feltételes cellaformázás segítségével A munkalapon látható „megdöntött” táblázatot úgy lehet összehozni, hogy a tartalmát soronként X cellával odébb csúsztatjuk, majd a cellák ra beállítjuk a ferde irásirányt a Formázás|Cella| Igazítás|Szöveg elforgatás (Format|Cell|Alignment|Rotate text) menüben Ekkor az Excel a cella keretét és alapszínét is döntve rajzolja ki. Ezt kihasználva, az elforga-tási szög és a sormagasság helyes megválasztásával olyan illúzió kelthető, mintha az Excek tudna megdöntött táblázatokat kezelni Ez főleg akkor hasznos lehető-ség, ha egy 2 dimenziós dolog (pl. itt egy 4×4-es pixelrács) és az egy dimenziós letárolása (lásd zöld sor) közti kapcsolatot akarjuk élőben szemléltetni

29 Gyakorlati alkalmazások 4: Minta felhasználói felület
A BusinessPlanner.xls fájl, amely egy üzleti terv készítő rendszer, arra mutat példát, hogy egy bonyolult felhasználói felület építése során, hogyan használhatók a cellák formázási stílusai, az értékhatáros és legördülő listás validációjuk, hogyan kell megjegyzésekben előugró súgót kialakítani, a részeredményekhez ellenőrzéseket és hibajelzéseket tenni:

30 Szakirodalom Adatáram-alapú felhasználói felületek:
Könyv az elméletükről (angolul): Cikkek a tervezésükről (angolul): Python/C++-alapú ingyenes toolkit/forráskönyvtár ilyen GUI-k generálására az EdgeWare-től, Excelben is használható ActiveX vezérlővel:


Letölteni ppt "Excel konzultáció 2. Előadás Dr. Pauler Gábor, egyetemi docens, ev."

Hasonló előadás


Google Hirdetések