Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Tegnap arról panaszkodtam, hogy mennyire nehéz összeszedni az Excel makróprogramozással kapcsolatos témakörökhöz a válaszokat.
Azután a keresgélés során olyat találtam, ami ugyan szintén nem ad választ az összes részletkérdésre, de olyan alapos, és közérthető (még a középszintű angolom ellenére is), hogy például a UserForm - ezen belül a MultiPage használatával kapcsolatos kérdésekben tökéletesen eligazítot. De ahogy elnézem a tartalomjegyzékét, a kezdő szinttől kezdve nagyon alapos, jól használható anyag. Ezért úgy gondolom, jótékony cselekedet, ha közzéteszem: http://www.ozgrid.com/Excel/free-training/ExcelVBA2/excel-vba2-index.htm
Viszont erről jut eszembe, hogy jó lenne egy olyan hely (és nem vagyok biztos benne, hogy ez egy fórum lehetne, mert abban elég hamar mélyre kerülnek az egyes hozzászólások), ahol összegyűjthetnénk a leghasznosabb hasonló tananyagokat. Esetleg létezik már ilyen?
Azt szeretném megkérdezni, hogy az excel beépített feltételes formázás funkcióját (amikor nyilakat , zászlókat, pipát stb lehet választani) lehet e ezt konfigurálni. Nekem az istenért sem sikerül.
Pl van egy számsor -3, 0, 10, -10, 13, 78 Azt szeretném elérni, hogy a 0 feletti értékeknél egy zöld nyil felfelé a 0 alattinál egy piros nyíl lefelé legyen, a 0-s érték pedig sárga nyil jobbra. Ha ráengedem a formázást akkor az lesz az eredmény, hogy a 78 as értéknél egy felfele zöld nyíl a többi piros le !
Így csak a számsor elemeihez tartozó számsor intervallumát vizsgálja a formázás , de ennek gyakorlatban kevésbé van értelme, (statisztikát általában viszonyszámokhoz mérünk és csak ritkán egymáshoz) tényleg ilyen bénán van megcsinálva, vagy én vagyok rosszul összerakva és valamit elbénázok ? :)
(Azt tudom, hogy sima szinezéssel meg lehet csinálni, de most ezek a nyilak kellenének)
Lehet, hogy nem erre gondoltál, de VBA-ban az amúgy simán excelből is elérhető függvények az Application.Worksheetfunction objektumon belül vannak. :D
Én eddig abban a hitben éltem, hogy minden excel függvény elérhető VBA-ból ily módon, de most ez megcáfolódott. (Mondjuk van megfelelője, ami egyszerűbb is, de akkor is.)
Azt én sejtem, hogy alapvető szövegkezelő függvényeknek a Basicben is kell lenniük, de nem tudtam, hogy ezek felülírják az Excel függvényeit, illetve azt olvastam lentebb itt a topicban, hogy érdemes mindig az Excel-függvényeket választani, mert gyorsabbak.
Állítsd az Excelt teljes képernyőre. Az Immediate ablakban kérdezd le a méreteit, amiket az előbbi ablakban megadtam, és ezeket az értékeket add a formnak.
Az If Worksheets(lapok(j)).Cells(k, 3).Value = "szla" Then feltétel helyesen találja meg a sima "szla" stringet (és itt gebedjen meg a zindex, hogy nincs állandó szélességű fontja), ellenben az
a várakozásommal ellentétben nem a szla végű cellákat találja meg, hanem folyton igazat ad. És az is furcsa volt, hogy az Application.WorksheetFunction. után a listában nem jött fel a Right függvény, de hibajelzést sem kaptam. Nem így kell Jobb(valami,4) függvényt csinálni?
Igen, ezt próbálgattam már. Most még egyszer megnéztem. Pl. 3-ra állítva megjelenik a vízszintes és a függőleges görgetősáv, de futtatáskor csak a függőlegest látom, és a mozgatási lehetőség (ennek a kék csíknak nem is tudom a hivatalos nevét, amivel görgetni tudok) nem jelenik meg, így a vízszintes görgetősávot nem is látom.
Ráadásul nem bánnám, ha futás közben teljes képernyős lenne a userform, hogy a felhasználó ne lássa alatta az excel táblát, mert minek. De nem találok utalást erre, csak a with tulajdonságnál látok egy számot: 718.5. De, hogy ez mi a fene, és hányra kell állítanom, hogy full screen legyen, arról semmi sem szól. Próbáltam 1024-et, ami a képernyő felbontásom, de az sok. Majd 1 órás találgatással be fogom tudni állítani.
De ahelyett, hogy most titeket kérdezgetlek tulajdonságonként, nincs ez valahol egyértelműen leírva? Furcsa ez az excel nyelv. Iszonyúan sokat tud, de dokumentációt nem, vagy alig találok a részletekről. Úgy kell összeszedegetni kérdezgetéssel, guglizással és próbálgatással:-(((
Köszi, délután kipróbálom a MultiPage controlt. Egyébként eltöltöttem egy fél órát azza, hogy próbálgattam a userform scroll tulajdonságait, de képtelen voltam elérni, hogy futás közben működjön a scrollozás lehetősége. Sőt képes voltam beírni olyan olyan textboxot a képernyő aljára, amit aztán scrollozás híján nem sikerült futás közben látni.
A userform-on a vezérlők sorrendjét "Tab Order" néven ismerik. Ez határozza meg, hogy TAB billentyű megnyomására hová ugrik a fókusz. Ugyanez vonatkozik az Enter gombra is, bár nem minden vezérlőtípus esetén.
Szóval kattints jobb gombbal a form-ra, és válaszd a Tab Ordert. Ott pedig rendezd megfelelő sorrendbe a vezérlőidet, hogy oda ugorjon Enterre, ahová kell.
Esetleg lehet játszani az EnterKeyBehavior Property-vel, bár az kissé mást csinál.
A vezérlő objektmok eseménykezelői hasznosak lesznek a projektedben, érdemes őket tanulmányozni.
Ha nem fér ki 50 vezérlő a form-ra, érdemes megfontolni a MultiPage control használatát.
Amúgy szerintem jöhet ide minden kérdés, úgyis pangás volt az utóbbi időben :o)
Adatfelvitelre. Egy 50 oszlopt tartalmazó Excel táblában szeretném az adatfelvivőknek a dolgát megkönnyíteni, és programból vezérelni az adatbeírást/módosítást. A billentyűkezelés célja, hogy ahol csak numerikus adatot várok, ott ne lehessen más karaktert beírni, ahol csak kétféle válasz lehet (igen/nem vagy férfi/nő), ott az első betű helyes leütésére kerüljön be a teljes szó, ahol majd névsorból lehet választani, ott segítsem a sok közül kiválasztandó név megtalálását. Az utóbbira még nem is tudom, hogy a legördülő menün kívül milyen technikák vannak az Excelben. Régen alkalmaztam olyan megoldásokat, hogy a program néhány karakter leütése után megtalálta a keresett nevet. (Az ilyen jellegű gyakorlatomat sok éve Clipperben szereztem, de ez egész más)
VBA adatfeldolgozást már csináltam többfélét is, de az adatfelvitelt illetően teljesen kezdő vagyok. Azért is vállaltam el a feladatot szívességből, hogy legalább megtanuljam ezt is.
Még abban sem vagyok biztos, hogy jó irányban indultam el azzal, hogy userformmal gondolom megvalósítani a feladatot. Itt eddig az első néhány adat textboxokban történő felvitelének a megoldásával kezdtem a tesztelést, és rögtön beleütköztem abba, hogy az első textbox kitöltésénél Down lenyomására a második textboxra ugrik, viszont az Enter lenyomására kettőt lépve a harmadikra, amit nem akarok. Bizonyára nem a 13-as enter kód cseréje a helyes megoldás, de egyelőre nem tudok jobbat erre sem.
Bizonyára lesz még rengeteg kérdésem a következő napokban/hetekben. Az egyik például az, hogy jó megoldást választottam-e egyáltalán a userformmal? Ha jól látom, ennek korlátja lesz majd a képernyő, tehát az 50 oszlopot nem fogom tudni egyetlen fel/le gördülő képernyőn kezelni.
Ha valaki tud tippeket egy ilyen munka általános nehézségeivel kapcsolatban, vagy internetes referenciákat (Sajnos a Kovalcsik Géza féle könyv csak főbb vonalakban ismerteti az interaktivás kérdéskörét), azt megköszönném. És, hogy ne terheljük vele a közösséget, akár privátban is szívesen fogadok tanácsokat.