Keresés

Részletes keresés

Fferi50 Creative Commons License 2013.10.11 0 0 22574

Szia!

 

Itt egy kódsor példa, ami kezeli a feladatot:

 

Private Sub Worksheet_Change(ByVal Target As Range)

dim x as double,y as double,regiveg as string,ujveg as string

if not intersect("A1",Target) is nothing then
   Application.EnableEvents = False
   y = Target.Value
   Application.Undo
   x = Target.Value

   Target.Value=y
   regiveg=range("X1:Y100").find(what:=x,lookin:=xlvalues,lookat:=xlwhole).offset(0,1).value

   ujveg=range("X1:Y100").find(what:y,lookin:=xlvalues,lookat:=xlwhole).offset(0,1).value

   range("A2:J500").replace(what:=regiveg,replacement:=ujveg,lookat:=ylpart)
   Application.EnableEvents = True

endif

endsub

 

A1 cella a "kódcella"

x = a régi kód

y = az új kód

X1:Y100 tartomány a kódtartomány: első oszlop a kódszámok, második oszlop a betűvégek

A2:J500 tartomány a megváltoztatandó cellák

 

Üdv.

Előzmény: forzajuve (22565)
Törölt nick Creative Commons License 2013.10.11 0 0 22573

Szia,

 

engem érdekel a probléma és a kód. Pastebin.com-on egyszerűen meg lehet osztani.

Előzmény: Attila Fehér (22570)
Fferi50 Creative Commons License 2013.10.11 0 0 22572

Szia!

 

Hasonló hibám nekem is volt, úgy tűnik, mintha "nem lenne elég ideje" arra, hogy megcsinálja a kódsort, amikor direktben fut, léptetve viszont igen.

Most nem emlékszem már rá, hogy mivel jártam túl az eszén, de nem kellett nagy varia - csak rengeteg időbe telt mire rájöttem.

Szívesem megnézném a kódodat, hátha beugrik valami.

 

Üdv.

Előzmény: Attila Fehér (22570)
Fferi50 Creative Commons License 2013.10.11 0 0 22571

Szia!

 

Van egy jó hírem számodra!

Az általam javasolt adatösszesítést meg lehet csinálni ugyanarra a lapra, amire a főösszegeket szántad! Nem kell másik munkalap! Az összesítést abban a cellában kezdi az excel, ahol Te szeretnéd. A láthatatlanságot pedig nem csak elrejtéssel lehet megoldani, hanem az ablak "lefagyasztásával" is.

Viszont: Ha az egyes munkalapokon csak egy oszlop van, amit összesíteni akarsz, akkor akár az első két oszlopba is kerülhet az adatösszesítés eredménye. Mint már korábban is írtam, az új munkalap beillesztése után csak néhány kattintás az új összesítés. (És megúsztad a rengeteg "hahibás" képletet is!)

Ha több oszlopod is van, akkor is működik az összesítés - csak azonos tartalmú oszlopnak azonos neve legyen.

Ezt a funkciót pont erre a feladatra találták ki.

 

Üdv.

Előzmény: Plzeg (22568)
Attila Fehér Creative Commons License 2013.10.11 0 0 22570

Szep estet mindenkinek!

 

Mostmar jobb kedvvel irok! :) Sikerult megoldani az Excel eroltetett bezaros dolgot. Vagyis csak felig... A hibat okozo kodsort kerestem, sorrol sorra kileptem az eppen futo makrobol majd megprobaltam bezarni. Termeszetesen amikor mar sikerult leszurnom hogy melyik funkcioban lehet a hiba. Szoval van egy funkcio ami 2 fele agazik attol ugg, hogy a beolvasott vonalkodhoz mar tartozik valami adat vagy sem. Ennek a makronak az elso fele akkor fut le, ha van hozza tartozo, a masik fele ertelem szeruen, ha nincs hozza tartozo adat. Tesztelesnel mindket agaban ugyan azt csinalta az excellel. Szoval az elso felen sorrol sorra zartam az excelt. Ahogy megnyomtam a kilepo gombot mar latszodott a hatas, hog tortent e valami vagy sem mert ha igen, akkor azt sem kerdezte meg, hogy akarom e menteni a fuzetet. 

Ahogy minden kodsoron vegigmentem, es nem jott elo a hiba akkor ment fel a pumpa, hogy ha egyben lefut akkor hiba van, ha soronkent kileptetem akkor jo az excelem. 

Elo vettem egy korabbi verziot ami tokeletesen mukodik es annak a kodjat hasonlitottam ossze az ujabb verzioeval. Aprobb (nem fontosnak tuno) kodsorok voltak elteroek. Hiaba remeltem azokat ki, es ugy futtattam az ujabb verziot akkor is elojott a hiba. 

Ekkor a korabbi verziobol atmasoltam az egesz makrot bele az uj verzioba. MUKODIK!!!! Semmi hiba az excel bezarasakor! 

Ugyan nagy most az oromom, mivel prezentaciom lesz a heten, tortenetesen egy multiceg Transzport irodajara kerul elso korben a program, de azert kutato es folyton kivancsisaggal telt ember level engem nagyon erdekel, hogy mi lehet, lehetett a gond?!

Ha a valaszra rajovok akkor abbol tanulok es nem kovetem el azt a hibat kodolas kozben megegyszer!

Ha valakinek kell a problemas kod, szoljon nyugodtan, es kuldom a mukodo kodot es a hibas kodot. Ahogy emlitettem egy eleg komoly program apro resze ez a kod, igy nem tudom, hogy ugyan azt a hatast kelti e egymagaban, de jo lenne rajonni erre a problemara. Marcsak azert is mert lehet, hogy meg egy bugot talaltam az excelben :)

 

Megegyszer szeretnem megkoszonni az ehhez a temahoz hozzaszolok segitseget!

 

Koszonom!

tbando Creative Commons License 2013.10.11 0 0 22569

Igy van. Tényleg kell technikai lap. A te megoldásodban is volt. Csak te főlapnak nevezted. Imigyen:

 

Jelenleg az alábbi módon összegezem az országonkénti értékeket, A4 tartalmazza a főlapon az országmegnevezést.

 

És szó sem volt arról, hogy ezt a lapot akarnád kiküszöbölni. Hanem csak ezen lap frissitési procedurájának az egyszerűsítéséről. Erre adott Fferi50 is egy megoldást, meg én is. Vagy rosszul látom?

 

 

Előzmény: Plzeg (22568)
Plzeg Creative Commons License 2013.10.10 0 0 22568

Tbando-nak és Fferi50-nek köszönöm a válaszokat. Azonban úgy látom, hogy a megoldások alapján nincs lehetőség a közvetlenül a munkalapokról feldolgozni az adatakokat, mindenképpen a technikai munkalap, vagy elrejthető oszlopok kellenek.

tbando Creative Commons License 2013.10.10 0 0 22567

Én ezt úgy csinálnám, hogy lenne egy alaptáblázat a számokkal, egy vezérlőtáblázat, amelyben a cellák értéke 1 ha változzon  a vele azonos poziciójú cellában levő szám, és nulla, ha nem: egy kódtáblázat, ami a vezérlő számokat  és a hozzájuk tartozó betüket tartalmazza és végül a főtábla, amiben a betük változnak a vezérlő cella alapján  az FKERES, a HAHIBA és a HA függvényekből összerakott képlettel  vezérelve.

 

Egy egyszerű példán

 

Legyen a vezérlő cella az A1.  

 

  1. tab:  A11-gyel kezdve a nálad a 2222, 2345 5699 és társaik
  2. tab  AA11 gyel kezdve  1, ha az az első táblázatban azonos helyűen levő szám ki van jelölve változásra, a többi üres
  3. tab: A  BA-oszlopban a vezérlő számok (1111,1234,2345 stb),a BB-ben pedig a hozzájuk tartozó betük ( FG, HB, GP  stb)
  4. tab:  Főtábla a változó számokkal .  CA11-be pedig az alábbi képlet, amit végigmásolsz a tervezett táblázatodban

 

     =Hahiba(ha(aa11=0;a11;a11&fkeres($A$1;BA:BB;2;0);aa11)

 

A képlet, ha nem találja a vezérlő számot, vagy a cella nincs változásra kijelölve akkor  az első táblázatbeli  számot tartalmazza, egyébként meg a kombináltat.

 

A példa csak a problémakezelés elvét illusztrálja. Tehát a  vezérléseket  változtathatod, a táblázatkezelést pedig további feltételek beiktatásával kedvedre turbózhatod .

Előzmény: forzajuve (22565)
Fferi50 Creative Commons License 2013.10.10 0 0 22566

Szia!

 

A munkafüzet kódlapjában használd a

Private Sub Worksheet_Change(ByVal Target As Range)

 

End Sub

eseménykezelő eljárást, ahol Target az a cella, amelyben a változás történt.

pl.

Private Sub Worksheet_Change(ByVal Target As Range)

if not intersect(változásgeneráló cella - pl. range("A1") -,target) is nothing then

   application.enableevents=false

   a cellák megváltoztatását végző eljárás

   application.enableevents=true

endif

End Sub

Így, ha más cellában történt változás, akkor nem generálódik cellamódosítás.

 

Hogy a módosítandó cellákat hogyan választod ki, na az egy másik kérdés szerintem (esetleg azt már tudod?), de ehhez tudnod kell azt, hogy a változásgeneráló celládban mi volt a változtatás előtti érték. Akkor a range.replace metódussal egy lépésben megoldható! Kukucskáld meg a hozzá tartozó helpet.

 

Üdv.

Előzmény: forzajuve (22565)
forzajuve Creative Commons License 2013.10.10 0 0 22565

Sziasztok!

 

Segítségeteket kérném az alábbihoz:

Szeretnék excelben egy cellát, ahova ha beírok egy számot (pl. 1234), akkor az excel automatikusan lecseréli bizonyos mezők (kb. 50 db össze-vissza) tartalmának utolsó két alfabetikus karakterét. Tehát pl. ez a kiinduló helyzet:

1111: 2222FG, 2345FG, 5699FG, stb.

beírom, hogy az 1111 helyett, hogy 1234: és a fentiekből 2222HB, 2345HB, 5699HB lesz.

 

Természetesen van egy táblázatom (elég nagy), amiben benne van, hogy 1111=FG, 1234=HB, 2345=GP, stb.

 

Ha nem is tudtok pontos megoldást, az is jó lenne, hogy egyáltalán milyen függvénnyel/eszközzel lehetne ezt elérni.

 

köszi szépen

dr. Lópici Gáspár Creative Commons License 2013.10.10 0 0 22564

Szuper!

Köszönöm szépen a gyors választ!

üdv

LG

Előzmény: Fferi50 (22563)
Fferi50 Creative Commons License 2013.10.10 0 0 22563

Szia!

 

Nézd át légy szíves a kimutatás táblázatokról - és ahhoz kapcsolódóan a kimutatás diagramról - szóló help-et. Ha következetes a munkalapod felépítése, akkor néhány lépésben megkapod a kívánt eredményt.

 

Üdv.

Előzmény: dr. Lópici Gáspár (22562)
dr. Lópici Gáspár Creative Commons License 2013.10.10 0 0 22562

Sziasztok,

eszkábálni szeretnék magamnak egy jól működő napi kiadások táblázatot. Írom már egy ideje, minden kiadott forintot feljegyzek, most szeretném kicsit fejleszteni, mert talán eljött az idő, hogy elkezdjek következtetéseket levonni a pénzköltési szokásainkból.

Hogy néz ki: vízszintesen vannak a kiadási tételek, az oszlopok sorrendje pedig: dátum, kategória (itt olyanok vannak, hogy 'kaja', 'kultúra', 'gyógyszer' stb), vásárlás helye, és utolsóként 'besorolás' (céges illetve magáncélú kiadás).

Az lenne a kérdésem, lehet-e, és ha igen, hogyan kell készíteni összesítéseket különböző szempontok alapján?
Pl. csinálnék egy olyan kördiagramot, ami realtime-ban mutatja, hogy hogyan aránylik a céges a magánhoz, vagy pl mutatná a saját kiadásokon belüli arányokat.

Külön munkalapon nézném a grafikonokat, de lövésem sincs, hogy hogyan kell képletezni ahhoz, hogy a grafikonos munkalap x cellájába gyűjtse azokat (a másik munkalapon levő) C oszlopban szereplő összegeket, amely sor B oszlopában (kategória) a 'kaja' szó áll.

Nem olyan bonyas szerintem annak, aki ért hozzá, csak sajnos én máshoz értek. :)

köszi és üdv
LG

Fferi50 Creative Commons License 2013.10.10 0 0 22561

Szia!

 

Nézd meg légyszíves az Application.Interactive értékét nem állítod-e át valahol False-ra. Mert ez megtiltja a billentyűzetről és az egérrel való bevitelt, kivéve az inputra használható formákat pl. inputbox.

Ezt a végén vissza kell állítani True-ra.

 

Üdv.

 

 

Előzmény: Attila Fehér (22560)
Attila Fehér Creative Commons License 2013.10.10 0 0 22560

Ezek nagyon jo feltevesek, mindenkepp neki kell es fogok allni a feladatonkenti tesztelesnek. A munkafuzetet lehet menteni es bezarni, sot minden egyeb dolgot lehet rajta csinalni kivetel a billentyuzetrol cellaba irni de a makro tud a cellakba irni. A feladatok vegzese kozben semmi baj nincs, mindent megcsinal amit kell, ezert gyanakszom arra hogy a programban valamit elallitok az excelben amit nem allitok esetlwg vissza. A screenupdating szinte minden egyes modulban szerepel. Ezeket esetleg a keresesben megkeresem es annak a parjanak is szerepelnie kell a kod vegen. 

Előzmény: Fferi50 (22559)
Fferi50 Creative Commons License 2013.10.10 0 0 22559

Szia!

 

Azt gondolom, itt valamilyen rejtett memória túlcsordulás lehet az ok (de ez találgatás szintjén van). Ha a feladatkezelővel történt kiszállás után simán újranyitod az excelt, nem mutat megnyitható - javított, mentett, stb. - másolatokat? Mert esetleg ebből is lehet következtetni, hogy mit sikerült végrehajtania és mit nem.

Egyébként meg - sajnos - marad az alapos, minden "menüágon" végigmenő tesztelés. Valamelyiken csak kibukik a probléma és akkor azt lehet tovább vizsgálni.

Még kérdések

  • csak kilépéskor van ez a jelenség, vagy feladatok végzése közben is "behal"?
  • a program közben kezel (megnyit bezár) más munkafüzeteket -azokban esetleg vannak (nem kívánt) makrók? Érdemes ezeket a műveleteket alaposan átnézni.
  • vannak nagy cellatartományokon végzett műveletek?
  • képernyőfrissítés kérdése (bár ez a VBA lapon nem játszik).

Ilyen messziről nekem kb. ezek jutottak eszembe.

 

Üdv.

Előzmény: Attila Fehér (22558)
Attila Fehér Creative Commons License 2013.10.10 0 0 22558

Szia. Nem nincs. Csak 2007es office van a gepemen. 

Előzmény: Fferi50 (22553)
Attila Fehér Creative Commons License 2013.10.10 0 0 22557

Az a rengeteg kod nem egy modulban van hanem egyik modul hivja a masikat attol fuggoen, hogy mire van a felhasznalonak szuksege. Minden erdemleges ujitasnal a verzioszamot noveltuk 1-el. Talan meg ez is segiteni tud abban hogy megtqlaljuk mi okozza a hibat. 

Egy masik kerdes ami m8ndenkihez szol : ha valami valtozonak vagy pl Set WSS =Sheets("Start") ezeket a valtozo ertekeket vissza kell allitani a kod vegen ha igen akkor miert? Nem vagyok nagyon kezdo a VBAban de ezek valaszat meg nem talaltam meg sehol sem. 

Előzmény: tbando (22552)
Attila Fehér Creative Commons License 2013.10.10 0 0 22556

Koszonom a gyors valaszokat!

Egy update az elozo hozzaszolasomhoz, ami talan leszukiti a kort:  ha ez a dolog megtortent, hogy az excelbol nem tudok kilepni akkor utana meg egy kicsi makrot sem tudok futtatni. Pl application.quit.  ha a kodban allok es F8al probalok lepkedni akkor mar az elso F8nal mintha futtatna a kodot de a sarga kiemeles sem jelenik meg. Ez a screen updatehez tartozna?

Eredő Vektor Creative Commons License 2013.10.10 0 0 22555

Én első körben megnézném, nincs e a kódban valami, ami megnyitja háttérben az excelt, de be meg nem zárja ha nincs már rá szükség.

Esetleg érdemes azt is megnézni, hogy screenupdating vissza kapcsolása vagy hasonló dolgok vannak e benne.

Ilyesmik:

 

Dim app as New Excel.Application

app.Visible = False

Dim book As Excel.Workbook

Set book = app.Workbooks.Add(fileName)

book.Close SaveChanges:=False

app.Quit Set app = Nothing

Előzmény: Attila Fehér (22551)
Fferi50 Creative Commons License 2013.10.10 0 0 22554

Az előző hozzászólásomhoz egy javítás:

 

A "szokott képes" helyett csak képes (azaz tud)!

 

Bocs, már rányomtam, mikor észrevettem. És miután képről is írtak, nehogy félreértsétek!

 

Üdv. 

Előzmény: Fferi50 (22553)
Fferi50 Creative Commons License 2013.10.10 0 0 22553

Szia!

 

Van-e az Excelnek másik verziója is azokon a gépeken, amin fut a programod?

Mert ilyen "együttállás" szokott képes hibát generálni és igen, véletlenszerűen - főleg megnyitásnál, mentésnél, mentés másként esetén.

Ilyenkor valóban csak a feladatkezelő segít.

 

Üdv.

Előzmény: Attila Fehér (22551)
tbando Creative Commons License 2013.10.10 0 0 22552

Ha meg vagy győződve arról, hogy a program okozza a hibát, akkor meg lehetne próbálni, hogy kb  a felénél elhelyezel egy exit sub-ot. Aztán ha az odáig futás után nem lehet belőle normálisan kilépni, akkor a program első felében van a hibát okozó utasítás, ha nem akkor a második felében.  Ezután az exit subot átteszed a problémás rész feléhez, és újra teszteled a kiléphetőséget, majd az eredménytől függően a problémás részt megint felezve újra futtatsz. Így fokozatosan eljuthatsz a hibás sorig.

 

Talán. Mert az hogy nem minden futás után jelentkezik a probléma, az bizony gondot okozhat. Ezért a procedurát a kilépési  probléma jelentkezése után kéne  megcsinálni, ugyanazokkal a beállításokkal mint amikkel a probléma történt.    

Előzmény: Attila Fehér (22551)
Attila Fehér Creative Commons License 2013.10.10 0 0 22551

Sziasztok, 

 

Egy baratommal csinaltunk egy komplexnek (makrobol) allo programot. Ma a munkahelyen kiprobaltam, ahol mukodott is rendesen egy hibaval (nem talalt egy fotot), ami nem is lenne gond, mert az a sor kommentelve lett. Korabban is tapasztaltam en is, es a baratom is, hogy ugyan a munkafuzetet be tudjuk zarni, de az Excelt nem. Nem minden futtatas utan jon elo ez a hiba. Csak a feladatkezeloben tudom leallitani az excelt, de mivel a munkahelyi gep le van vedve igy a feladatkezelo sem erheto el. 

Ezt nem hiszem hogy termeszetes lenne az Excelnel. Biztos vagyok benne, hogy a program csinal az excellel valamit. Mivel kb 10000 kodsorrol beszelunk nagyon nehez lenne tesztelni es megtalalni mi okozhatja a hibat. 

Valakinek van valami otlete erre a hibakeresesre?

 

Elore is koszonom a valaszokat!

hát ő Creative Commons License 2013.10.09 0 0 22550

Szia!

Köszönöm a segítséget de sajnos nekem mégígy sem megy légyszíves küld el az elkészített munkalapot. Köszönöm

Előzmény: Fferi50 (22512)
hát ő Creative Commons License 2013.10.09 0 0 22549

Szia!

Biztos nagyon idegesítő vagyok, de nekem még ezek alapján se megy az elkészítés. Ezért kérlek küld el az elkészített munkafüzetet.

Előzmény: Fferi50 (22512)
Fferi50 Creative Commons License 2013.10.09 0 0 22548

Szia!

 

Még utánanéztem egy kicsit. Szerintem simán megoldható a problémád az Adatok, összesítés menüpontból. Kijelölöd az összesítő függvénynek az összeget.

Bejelölöd a feliratokat vegye a felső sorból és a bal első oszlopból. Hozzáadod a tartományokat egyszer. Az Excel megoldja azt, hogy egy munkalapra kerüljenek az országok adatai.

Ha új munkalap kerül be a füzetbe, csak annak a megfelelő tartományát kell hozzáadnod az összegező munkalaphoz.

Ezzel megvan az "árnyék" munkalapod.

A Fő munkalapon csak ezt kell összegezned:

Első oszlop = árnyék munkalap első oszlopa. Majd az összegző függvények a második oszlopba így:

Pl. A2=magyar, B2:=SZUM(Munka4!2:2), ha az árnyék munkalapod neve Munka4.

 

Ha az országok száma nem változik, akkor ehhez már nem is kell később hozzányúlnod.

 

Előzmény: Plzeg (22544)
tbando Creative Commons License 2013.10.09 0 0 22547

 

B+, már megint nem annak válaszoltam, akinek akartam :((((((.

 

 

De azért remélem plzeg rábukkan

 

Előzmény: tbando (22546)
tbando Creative Commons License 2013.10.09 0 0 22546

Itt egy megoldás. Nem OFFSZET-tel, hanem FKERES-sel.

 

A minta példámon a nemzetek az alaplapokon  a11-en kezdődnek, a hozzájuk tartozó boldogságaik pedig a b11-en.

 

Az összesítő lapon pedig:

 

A11:A20= nemzetek

B11:B20= szummázott boldogság

C11:D20= 01 és 02 lapok boldogságai

C10:D10= lapnevek

C8:D8=  az adott laphoz tartozó fkeres tartomány

 

A kulcsképletek amiket értelemszerűen továbbmásolsz:

 

c8:          =c10&”!a11:b20”

b11:       =szum(c11:z11)

c11:        =hahiba(Fkeres($a11;indirect(c$8);2;0);0)

 

Ha ezt a táblázatot megcsinálod mondjuk a z-oszlopig, , akkor az új lap bemásolásával és elnevezésével azonnal  újraszummáz.  A c..z oszlopokat akár el is rejtheted.

 

 

 

Előzmény: Fferi50 (22545)
Fferi50 Creative Commons License 2013.10.09 0 0 22545

Szia!

 

Nem tudom, ki állítja össze a heti jelentés munkalapokat? Nem lehet vele egyeztetni, hogyan csinálja?

 

Én mindenesetre csinálnék egy összesítő munkalapot (az előttem szólók javaslatait összegyúrva, ahol minden ország szerepel a sorokban és az oszlopokban az aktuális heti jelentés értéke). A második oszlopba pedig betenném az összegzőképletet ami a sor hátralevő celláira vonatkozik.

Ha mégsem sikerül rávenni az adatszolgáltatókat, hogy erre a munkalapra írják direktben a heti értéket, akkor is egyszerű rutinnal átmásolhatod rá az új információkat. Ezt a munkalapot akár el is rejtheted.

 

Az összegző jelentés eredmény celláiba pedig egyszerűen behivatkozod a háttér (összesítő) munkalap megfelelő celláját.

 

Üdv.

Előzmény: Plzeg (22544)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!