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.
Szia! Nagyon köszönöm a válaszod! Az a jel ott volt a macroban, nem is értem hogyan sikerült ezt rosszul bekopiznom. Viszont nagyon köszönöm ezt az tippert használni fogom.
Igazánból valami nagyon fura dolgot műveltem a makróval, amit abszolút nem értem. Létrehoztam egy PERSONAL nevű fájlt a próbálgatásaim során...de én nem akartam...:-D Szóval szerintem az excel tényleg nem értte mi az aktív munkafüzet.
Azt szeretném még kérdezni, hogy ha ezt a makrót szeretném több ember számára hozzáférhetővé tenni azt hogyan tudom.
A makróm, ami egyébként 99%-ban kész /nagyon éleveztem :-D/ úgy kéne működnie, hogy külön gépeken te tudják futtatni...
Ezt hogyan tudom praktikusan megoldani? Lehetne template-tel, de itt ez nem jöhet szóba.
Itt alapban a bal oldalon látható felületen keresd meg a "Modul" lapokat, amelyekre dupla kattintással megnyílik egy szkript, amit kézzel ki tudsz törölni. (Ha nincs levédve jellszóval...)
A makrót hogy tudom kitörölni egy dokukmentumból? (Office XP-t használok). Az Eszközök/Makrók/Makró menüpontban ha kijelölöm a makró nevét, a Törlés gomb szürke, nem lehet törölni.
A fájlnév megadásakor UjNev a változód neve (helyfoglaláskor is), mentéskor UjNeve. Mivel az UjNeve értéke üres string, nem tudja elmenteni. Egy betű ilyen galibát okozhat.
A ThisWorkbook mindíg az a workbook, ami a kódot tartalmazza, szóval a definiálással nincs gond.
A probléma az lehet, hogy utána az ActiveWorkbook object-tel akarsz valamit csinálni, de lehet, hogy az új Workbook-ot nem activáltad.
Az új workbook-ot a kód futása közben hozod létre, mert akkor a következő technikát ajánlom:
Dim UjWorkbook as workbook (itt csak definiálsz egy object-et amit később fogunk használni) Set UjWorkbook = workbooks.add (innentől az új workbook-ra bármikor hivatkozhatsz, mint 'ujworkbook', igy sose keveredsz bele, hogy éppen melyik workbook-kal csinálsz dolgokat ... (kód többi része) ujworkbook.saveas ... (innen az jön amit eddig is csináltál, csak a bizonytalan Activeworkbook helyett a tuti ujworkbook object-et hivatkozod a kódban).
Szerintem a Hely változóddal van gond, mert amikor a kódod kiolvassa, akkor "csupasz" a vége. Igy nézhez ki, pld: C:\probaFolder Ha ezt összefűzöd a filenévvel (valami.xls), akkor egy hibás filenevet generálsz, mert a filenév és az elérési út között kellene legyen egy \.
Szóval próbáld ki ezt: Hely = ThisWorkbook.Path & "\"
Amit keresel az az INDIRECT függvény, ami egy szöveges referenciát excel referenciává alakít át.
Vagyis az =INDIRECT("A1") megfelel annak, mintha azt írtad volna be, hogy =A1. Az INDIRECT elfogad cella értéket is, ha a cella tartalma értelmezhető referenciaként (esetedben ez a helyzet), ilyenkor természetesen nem kell idézőjelek közé tenni az INDIRECT "bemenő" adatát.
Esetedben a =SUM(INDIRECT(B1):INDIRECT(B2)) a megoldás. (Magyar excelben ez =SZUM(INDIREKT(B1):INDIREKT(B2))
Felmerült még egy probléma. A részleteket nem írom le, hogy ne bonyolítsam a történetet, csak azt, hogy mit kellene, hogy csináljon a program. A könnyebb megértés kedvéért írok egy példát, cella azonosító -> cella tartalom elrendezésben.
A1 -> 1; A2 -> 2; A3 -> 3; A4 -> 4; A5 -> 5; A6 -> 6; A7 -> 7; A8 -> 8; B1 -> A1; B2 -> A8. Tehát az A1-től A8-ig terjedő oszlopokban számok vannak 1-8-ig. A B1 oszlopban az van szövegesen beleírva, hogy: A1, a B2 oszlopba pedig az van szövegesen beleírva, hogy A8.
A feladat az lenne, hogy Az A1-től A8-ig tartó cellákban a számokat összeadjam. Ez idáig még egyszerű, mert a SZUM(A1:A8)-al könnyen megoldható. Csakhogy nekem úgy kellene összeadni, hogy az excel a B1 cellában található hivatkozást vegye alapul, valamint a B2 cellában találhatót. Tehát, azt akarom megoldani, hogy ha beírom, hogy SZUM(B1:B2), ugyan azt az értéket kapjam, mint a SZUM(A1:A8)-ra.
Itt csak arra kellene rájönni, hogy hogyan kell függvénybe megadni hivatkozást "kézzel". Próbálgattam ilyeneket, hogy SZUM([B1]:[B2]), hátha így az adott cella értékét helyettesíti be, de nem jött össze.
Csak az a problémám, hogy nem mindig fixen 5 sort kell összefűzni, hanem változó, hogy épp mennyit. Egy HA és egy SOR függvénnyel meghatározom, hogy melyik az első cella ahonnét össze kell fűzni, és melyik az utolsó. Az első és az utolsó cella között kellene összefűzni az adatokat, ezt meg csak úgy lehet, ha ki tudok jelöltetni az excellel egy tartományt, hogy mettől meddig fűzze össze a cellákat.
Hogyan lehet excelben úgy szöveget összefűzni, hogy ne egyesével kelljen megadni a cellákat, hanem ki tudjak jelölni egy tartományt, amit össze kell fűzni? Tehát ez helyett: ÖSSZEFŰZ(A1;A2;A3;A4;A5) ezt akarom: ÖSSZEFŰZ(A1:A5), de ezt így nem fogadja el az excel. Ez helyett van valami megoldás, ami ilyen módon összefűzi a cella tartalmakat?
Olyat szeretnék készíteni az excelben, hogy ha egy táblázatban egy cella értéke annyi, amit szeretnék, akkor valami hangot, vagy figyelmeztetést adjon nekem.
Több cella értéke folyamatosan változtatható, és egy cellában adja ki az eredményt.Nos ennek az egy cellának a figyelése, vagy figyelmeztetésének a megoldására lennék kíváncsi, hogy ha hanggal ezt meg lehetne oldani.
Köszönöm, csak így nem jó, mert nem "statikusan" akarom beírni, hogy az A41;A42;A43-at fűzze össze, hanem azt akarom, ha pl. az A41 értéke IGAZ, akkor az A41;A42;A43-at fűzze össze. De ha az A105 értéke IGAZ, akkor az A105,A106,A107-et fűzze össze. Tehát nem konkrét cellaazonosítókat kell megadni, hanem azt, hogy fűzze össze azokat a cellákat, amik értéke IGAZ, az IGAZ alatt van egy sorral és az IGAZ alatt van két sorral. Tehát valahogy az excel tudtára kellene adni, hogy ha pl. Az A105-ös cella értéke igaz, akkor fűzze össze az A105;A105+1; A105+2 cellék tartalmát. A105+1 alatt A106-ot értem, A105+2 alatt pedig A107-et értem.
Ahogy Te írtad le úgy én is meg tudom csinálni, csak azzal az a baj, hogy csak az adott cellákra lesz jó, de én azt akarom, hogy ha az excel valahol IGAZ értéket talál, akkor az alatta lévő 2 cellát fűzze össze az IGAZ értéket adó cella tartalmával.