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.
Lehet, hogy az volt a baja, hogy egyáltalán nincs argumentuma? Most már mindegy, a felhasználói munkalapon csak egy szám és két szöveg van max. 100-200 sorban, és nem szerkesztik túl gyakran, nem fog gondot okozni a volatile sem. Az egész csak annyit csinál, hogy az A oszlopban egymás alá írt számokból a másik munkalapon elkészít egy SQL lekérdezést, amit a user bemásolhat az adatbázis-kezelő felületre.
Szerintem, ha írsz a függvénybe még egy (Range típusú) argumentumot, és a képletben beadod neki az A oszlopot, akkor az A oszlop bármi változására számolnia kellene, függetlenül attól, hogy esetleg nem is kezd semmit az A oszlop tartalmával.
Valahogy így:
Public Function AzÉnSzámolásom(Arg1, Arg2)
End Function
helyett
Public Function AzÉnSzámolásom(Arg1, Arg2, Arg3 As Range)
Nekem ennél egy faramucibb szitum volt. Két cellám értéke egy harmadik értékétől függött, amit manuálisan vittem be. A beírás után az egyik cella minden további kiszámolódott, a másik azonban csak az általad leírt F2 Enter hatására. Elég fura, nem?
Aztán valahogy megoldottam, csak már nem tudom felidézni, hogy miképp. Egy biztos: application.volatile nélkül. Talán egyszer beugrik. Akkor majd megírom.
Van egy felhasználói függvényem, az A oszlopba írt számokkal csinál valamit. Viszont ha hozzáírok az A oszlophoz vagy törlök a végéről, akkor nem frissül a függvényérték, hiába nyomkodom az F9-et. Csak akkor frissül, ha megnyitom szerkesztésre azt a cellát, ahova a függvényt beillesztettem, és entert nyomok.
Hogy lehetne rávenni, hogy F9-re is számolja újra a sorokat? Vagy mi a frissítés módja?
Csak közvetetten működik: beállítod a képet, a méretét a cella méretéhez igazítod, és azt mondod, hogy a cella méretétől és helyétől függően jelenjen meg a kép. (Így úgy működik, mintha a cella háttérképe lenne, de a valóságban nem az.)
ogyan lehet megcsinálni azt, hogy egy adott cellának a háttere egy kép legyen. Nem arra gondolok, amikor az egész dokumentumnak ad egy átteret, hanem konkrétan egy cella hátterét akarom megváltoztatni egy képeel.
Ha rákattintok az oldaltörés megtekintésére, majd visszaváltok a Normálnézetre, oldaltörést jelző szaggatott vonalak maradnak a lapon. El lehet ezeket tüntetni a filementés/újrahívás nélkül?
megpróbáltam elképzelni a táblázatodat, de ennyi info alapján nekem nem megy, túl sok variáció lenne lehetséges. Egy kicsit több info kellene nekem legalábbis.
Nem tudom mennyit gúgliztál ebben a témában, de én olyan hozzászólásokat látok, hogy helyenként a nyelvi vagy regionális beállítások okoznak problémát. Nézd meg mindkettőt, abból baj nem lehet.
Ha a Skydrive-on keresztül az Excel Web App-ban dolgozom, ott alapból .xlsx a fájl kiterjesztése, úgy tudom, azt nem is tudom átnevezni .xls-re. Az az érdekes, hogy 1 éve használom így a szolgáltatást, eddig rendben működött. Egyik napról a másikra történt ez. Ha van másnak is Windows Phone-os telefonja, és kipróbálta az általam leírtak, és ugyanezt tapasztalta, megoszthatná velem a véleményét. Nagyon jól jött nekem eddig a munkámnál, és most elég körülményes minden, hogy nem tudom szerkeszteni a korábban az Excel Office App-ban szerkesztett fájlokat.
Szeretném kérni valaki segítségét abban, hogy mi lehet az oka, hogy a hét eleje óta nem tudom szerkeszteni a Nokia Lumia 800-as telefonomon az olyan Excel fájlokat, amelyeket előtte a Skydrive-ban módosítottam. Üzenet: "Nem szerkeszthető a munkafüzet"
Ha létrehozok a neten a Skydrive-ban az Excel Web Apps-ban egy Excel fájlt, és csak 1 betűt írok bele, már akkor sem tudom szerkeszteni a mobilomon a Mobile Office-ban. Már alaphelyzetbe is visszaállítottam a Mobile Office-t, de hiába. A fájl kiterjesztése .xlsx, tehát még ez sem lehet gond.
Kérem valaki próbálja ki, és jelezzen vissza, hogy más is tapasztalja-e, mert nagyon nagy segítség lenne a munkámhoz, ha újra működne.
A 19982 kérdésemben segítettetek, hogy egyszerűen beírom a legnagyobb értéket és addig a legördülő listából átvált raktáron felirattal(egy sima ha() fgv-el)
Most az lenne a kérdésem, hogy meg lehet-e oldani valahogy ne a listából kelljen nekem egyesével kiválogatni a sorszámhoz tartozó "visszahozva" feliratot hanem csak beírom egy cellába egymás után az értékeket és átváltja mert nagyon széles a táblázat.
Példával(hátha értelmesebb :D)
E:KR-ig tart a táblázat.
Visszahozták pl a 50-51-52 sorszámot. Ez EY23,FB23,FE23.
És azt szeretném, hogy az "50", "51", "52"-t beírjam az A20-ba egymás után és a "raktáron"-ról átbillen a "visszahozva".
A problémám az, hogy ezt heti rendszerességel kell ami nem 3 tételt jelent hanem vagy 50-60-at. És egyesével átbillenteni nagyon nagy "élvezet" főleg, hogy nem is növekvő/csökkenő sorrendbe hozzák hanem össze vissza...Mert gépelni szerintem mégis csak gyorsabb mint keresgélni E-től KR-ig.
Kösz a mintákat. Megnézem. Egyébként azt hiszem, sejtem az Activecellel kapcsolatos kifogásaid okát. Amikor még programozásból éltem (ez még a DOS idején volt), akkor sokat foglalkoztam a strukturált programozással, és igyekeztem a programjaimat is ebben a szellemben felépíteni.
A VBA-ban nem sokkal vagyok túl egy kezdő szintjén, ezért itt nem foglalkoztam eddig ilyesmivel, de feltételezem, hogy hasonló elvek miatt javasolod kerülni az Activesheet, Activecell, vagy Selection hivatkozásokat. És ebben egyetértek. És feltételezem, hogy a sendkeys elleni kifogásod is hasonló tőről fakad. Szóval nem beszélsz összevissza:-)
Érdekes, nálam tbando makrója tökéletesen működik. És még az általa jelzett hiba sem jött elő. Persz nem próbálgattam órákon át. Bár amikor kipróbáltam egy Notebookon, ott előfordult, hogy a hüvelykujjam hozzáért a touchpad-hez, és elugrott a kursor.
Elfogadom. Tényleg okosabb lehetett volna activecellel. De a sendkeys jutott az eszembe. Azt abszolut nem értem, hogy nálad miért nem müködik. Nálam, eltekintve az időnkénti NUMLOCK-os gubanctól, kifogástalanul müxik.
ps. Nálam a sendkeys csak olyan problémát okozott idáig, hogy amikor F5-tel indítottam a makrót, beleírt a makróba :((.
A második az A oszlop utolsó (legalsó) töltött celláját találja meg, függetlenül attól, hogy a többi oszlopban mi van.
Az első viszont figyelembe veszi a teljes munkalapot, és (azt hiszem) az utolsó nem üres sor és az utolsó nem üres oszlop metszetét találja meg. De őszintén szólva nem vagyok teljesen képben a .SpecialCells(xlLastCell) elvi működését illetően.
Igazad van, és a tegnapi válaszod nyomán végülis így oldottam meg a feladatot, tehát az 1. lapon állva olvastam be a 2. munkalap adatait. Így valóban elegánsabb. Sajnos nem vagyok profi az Excel VBA parancsait illetően.
Egyetlen ponton nem tudom, hogy lehetett volna kiváltanom a munkalapváltást. A 2. munkalap utolsó sorának meghatározását csak az ActiveCell.SpecialCells(xlLastCell).Row paranccsal tudom elérni. Ezt is meg lehet oldani hasonló módon?
A makróm időnként megmagyarázhatatlan hibát produkál. Úgy tűnik, hogy a füzetbehívást követő első bill_15 indítása után fordul elő, de akkor sem mindig, csak néha. Az szok ilyenkor előfordulni, hogy az első értéket még beírja, majd utána a NUMLOCK kikapcsol, az ember meg csak nézi, hogy hova is ugrott a kurzor. A NUMLOCK bekapcsolásával a hiba ugyan gyorsan reparálható, és utána a működés problémamentesnek. A kérdésem csak annyi, hogy a makróm bugos vagy az excel?
"Erről az a véleményem, hogy rég eláshatnám magam a programozási ismereteimmel, ha megengedném magamnak azt, hogy a program bármely pontján ne legyek halálosan biztos abban, hogy éppen melyik munkalapon állok."
Erről az a véleményem, hogy ha valaki Activesheet, Activecell, vagy Selection hivatkozásokat használ, az nem lehet teljesen biztos benne, hogy éppen hol áll. Számtalan lehetőség van, hogy hol tud kisiklani a biztosnak hitt hivatkozás.
Másrészt meg sose értettem, hogy minek váltogatni a lapokat, ha egyszer a Munka1 lapon "állva" a Munka2 lap bármelyik cellája, de még a [Munkafüzet2.xls]Munka2 lap bármelyik cellája is elérhető és lekérdezhető anélkül, hogy arra "állnánk rá". A Select utasítás csak arra jó, hogy vibráljon a kép a makró futása közben. (Persze ez is lehet cél, de akik a legtöbb Selectet használnak, azok általában le is tiltják Screenupdating=False paranccsal :o)))
Köszönöm. Igen, ezeket a hivatkozásokat máskor már használtam is, amikor más fájlból kellett adatokat beolvasnom, meg amikor több különböző munkalapról kellett adatokat összehoznom. Csak itt egy viszonylag egyszerű feladatról volt szó, ahol csak egy pillanatra megyek át egy új munkafüzetlapra néhány adat beolvasásáért aztán megyek is vissza a másikra, ahol az adatok vannak. Szóval szó sem volt lustaságról, csak szükségtelen volt a teljes hivatkozás használata. Mindenesetre a DIM és Set sorokat köszönöm, valahogy eddig nem használtam ilyen megoldást.
Egy ponton vitatkozom veled. Azt írod: "...ha biztos akarsz lenni benne, hogy a hivatkozásod nem téveszt célt, mindig odateszed őket". Erről az a véleményem, hogy rég eláshatnám magam a programozási ismereteimmel, ha megengedném magamnak azt, hogy a program bármely pontján ne legyek halálosan biztos abban, hogy éppen melyik munkalapon állok.
Amit a sorszámra való hivatkozásról mondasz, abban teljesen igazad van. Csak itt speciális eset volt, hogy nem akartam a felhasználó kezét megkötni a munkalap elnevezésében, hanem azt írtam le a programleírásban, hogy a működés feltétele, hogy az első munkalapon legyenek az adatok, amivel számol, és a másodikon a kihagyandó dátumok listája.
Persze aztán megoldottam a dolgot azzal, hogy a munkalap nevét szerencsére megengedte a 2007-es is kiolvasni, így a cells hivatkozásokat már meg tudtam adni a munkalap nevével.
Köszi mindenkinek az erőfeszítést, ki fogom próbálni, csak sajna nem tudtam várni és reggel korán elkezdtem, és mostanra végezve be is fejeztem az összes kérdőív rögzítését. De mindeképpen ki fogom próbálni a héten a megoldást, amint lesz rá egy pici időm (először a kiértékelést kell megcsinálnom :) ), mert még kell majd jópárszor hasonlót csinálnom.