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.
A tegnapi válaszom kicsit elhamarkodott volt. Ez a technika valóban működik, és szükség esetén alkalmazni is fogom. Természetesen a megfelelő óvatossággal. És köszönöm.
Köszönöm, kipróbáltam, és valóban jöttek az új gondok, szóval egyelőre letettem róla. Annál is inkább, mert még egyszer megnéztem Delila javaslatát, és azzal azt hiszem, mégiscsak meg lehet oldani a dolgot.
Az elsőt sikerült megoldani, de a második nem megy.
Izgalmasnak találom magam megfejteni, de a súgó csak olyan eseteket mutat, ahol a vizsgált cellák színeződnek át, nem egy azoktól független. Ha képletet kapok, hidd el, ki fogom elemezni, az a típus vagyok...
Köszönöm
2)
Az A7 cellában szereplő értéket szeretném pirosra színezni, ha a C7 től K7 celláig terjedő cellák bármelyikében 0-tól eltérő eredmény szerepel. Nem a vizsgált cellákat szeretném színezni, csak az A7-et.
Értettem a kérdésedet! Azt is értem, hogy kezdő vagy az excelben. Ezért van hozzá a help. Megírtuk, hogy merre felé keresgélj a helpben.
Mégegyszer:
SK javasolta a darabteli függvényt az első kérdésed megoldására. Ehhez (is) vannak példák a helpben.
Második kérdésedre jó a feltételes formázás. Erről is olvashatsz a helpben.
Sok-sok évvel ezelőtt, amikor elkezdtem excellel foglalkozni, még sehol nem volt internet, sőt még az excel se volt magyar, de a help akkor is ott volt már.
Sokkal hamarabb meg fogod érteni a működését, ha magad jársz utána, mintha készen kapsz - egyébként nem biztos, hogy jól működő - képleteket.
=E7*HA(H7="Gizi" vagy "karcsi" vagy "béla" stb (ezeket a neveket egy bővíthető oszlopban gyűjteném);-1;0)
Az E7 oszlopban szereplő érték -1 szeresét szeretném a cellába beszúrni, ha a H7 cellában a Gizi szöveg szerepel. Eddig ok, de ezt a képletet szeretném továbbfejleszteni, hogy a Gizi helyett egy oszlopban (legyen J oszlop) szereplő több (bármelyik, de nem 0) szövegre is megjelenjen az érték
2)
Az A7 cellában szereplő értéket szeretném pirosra színezni, ha a C7 től K7 celláig terjedő cellák bármelyikében 0-tól eltérő érték szerepel. Nem a vizsgált cellákat szeretném színezni, csak az A7-et.
Az E7 oszlopban szereplő érték -1 szeresét szeretném a cellába beszúrni, ha a H7 cellában a Gizi szöveg szerepel. Ezt a képletet szeretném továbbfejleszteni, hogy a Gizi helyett egy oszlopban (legyen J oszlop) szereplő több (bármelyik, de nem 0) szövegre is megjelenjen az érték
2)
Az A7 cellában szereplő értéket szeretném pirosra színezni, ha a C7 től K7 celláig terjedő cellák bármelyikében 0-tól eltérő érték szerepel.
A következőkben kérném a segítségeteket: van egy táblázatom, az A oszlopában terméktípusok (vmelyik többször, vmelyik csak egyszer fordul elő, a B oszlopban mindegyikhez egy összeg. A lényeg, hogy a C oszlopba szeretnék beszúrni egy függvényt, ami terméktípusonként a maximális szumma összeget mutatja minden sorban, valahogy így:
termék érték összeg
a 20 20
b 10 70
b 15 70
c 30 30
b 45 70
d 15 15
milyen függvénnyel, vagy annak kombinációjával lehetne ezt megoldani?
Már ha tudod az immediate ablakot használni, de nem, a userform nem engedi, mert vár arra, hogy valami történjen vele.
Ha modal = false , akkor viszont tudsz az immediate ablakban "dolgozni". Csak akkor a program nem vár arra, hogy kitöltsd a formot!!!
De miért kellene select??? Pláne, ha konkrétan tudod, mit szeretnél megnézni?
Javaslom a debug.print utasításokat a userformot használó függvényekbe a kritikus helyekre, akkor a form futása közben átváltva a VBA ablakra, láthatod az immediate-ban a kiiratásokat (persze nem árt megfelelő információt fűzni hozzá a kiiratásban), vagy akár utólag is megnézhető a "történet".
Szóba jöhet még az Msgbox használata megfelelő helyen a programban.
Esetleg a Ctrl+break -kel megállítás (vagy Stop a programban).
Az immediate ablakban kiadott sheets("Munka1").select, range("x1").select, és hasonlók megmutatják a kérdéses részt a füzetben, csak vigyázz, mert az lesz az aktuális pozíció. Érdemes visszaállni.
Program tesztelés közben az ember gyakran megnézi az aktuális, vagy valamely másik munkafüzetének az állapotát, ellenőrzi a benne végbement változásokat futás közben is. Userformokkal dolgozva viszont az a tapasztalatom, hogy abban a pillanatban, hogy a Form inicializálását befejezte a program, és felhasználói intézkedésre vár, onnan kezdve nem engedi megnézni a munkafüzeteket, ami néha nagyon kellemetlen. Csak a teszt félbehagyásával, a programból kilépve tudom megnézni az eredményt.
Szivesen. Én is sokat tanultam közben az érvényesítésről meg egyéb dolgokról is. (A legelső verzióm működött, de lényegesen bonyolultabb volt, úgyhogy "lemondtam róla".)