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.
Sziasztok; egyszerű kérdésem van: makró rögzítésekor (Excel 2002) hogy lehet megoldani, hogy lejátszáskor a művelet ne abban a cellában hajtódjon végre, mint ahol felvettem?
Pl. ebben az egyszerű esetben hogy kellene átírni a makrót? Köszönöm előre is a segítséget!
Azért gondoltam a problémát megoldhatónak, mert az Excel használja a helyzetérzékeny kiegészítést. Pl. ha egy oszlopban városnevek vannak, akkor felkínálja a felette lévők közül azt, amelyik egyedül egyezik meg az éppen szerkesztett mezővel.
Ez ebben a formában szerintem nem fog menni. Az Excel cella objektumának (legalábbis 2003-as verzióig) nincs olyan eseménye, ami a billentyűleütésekre reagálna. Kerülő megoldásként elképzelhető, hogy az A1 cellát pontosan lefeded egy TextBox-szal, mert azzal szerintem lehetségessé válik, amit akarsz. De a probléma-leírásod ugyebár "sarkított", és gyanítom, hogy a részletek ismeretében ez sem elegendően jó megoldás...
Amúgy egyszerű, egy másik oszlopba átmásolod az első cellát, utána a hárommal lejjebbi cellát, és ezt másolod, amíg az utolsó értékhez érsz, és erre az oszlopra ráereszted a grafikon készítőt.
Egy 1300 sort tartalmazó oszlopból szeretnék olyan grafikont készíteni ami az adathalmazból csak minden harmadik értékéből dolgozik,vagy egy másik oszlopba kiiratni és abbó készítenék grafikont.
1. a Vezérlőpult/területi beállításokban oroszra (Google Earth azonnal észre is vette)
2. az Excelben Beállítások/Általános/WEBes beállítások/Kódolásban elöször oroszra aztán Unicode-ra,
de egyik sem segített
Cellába be tudok írni (Szimbolumbeszúrással vagy másolással) orosz szöveget, de a VB-script DIR függvénye már kérdőjeleket ad vissza a Getattr függvény meg "Bad filename or number" hibajelzéssel elszáll.
A Visual Basic képernyőn is van Tools/References ablak rengeteg kiválasztható plusz lehetőséggel, de melyik tanítja meg a VB-scriptet oroszul?
Az sz=Worksheets.Count - 1 sorban az sz változóban megadtam a füzet lapjai száma mínusz 1 értéket (az utolsó lap az összegző oldal, azt nem vesszük bele).
A For lap...Next ciklus végigsétál az egyes lapokon. Rááll az aktuális lapra, ott is az A1 cellára. Kijelöli A1-től az alsó, értéket tartalmazó sorig [Range(Selection, Selection.End(xlDown)).Select], másolja, és a füzet utolsó lapjára, ott is az A oszlopának sor-adik cellájára beilleszti
A sor változó az első esetben 1, ezt a ciklus előtt adtam meg. Beillesztés után a sor változó értékét a
sor = Sheets(Worksheets.Count).Range("A60000").End(xlUp).Row + 1-gyel meváltoztatom az összesítő lap első üres sorának értékére, hogy a következő lap értékeit az előzőek alá tegye be.
A ciklus végén az összesítőn minden lap A oszlopának az adata szerepel, egyes értékek többször is.
A következő 'egységgel' Ráállok az utolsó lapra: Sheets(Worksheets.Count).Select, és rendezem az adatokat emelkedő sorrendbe.
Kikeresem az alsó sort: usor = Range("A1").End(xlDown).Row.
A B1:Busor tartományba beírom a DARABTELI (COUNTIF) függvényt
[Range("B1:B" & usor) = "=countif(A:A,A1)"], ami az A oszlop cellái mellé beírja, melyik értékből hány darab van.
Másolom, és értékként saját magára beillesztem a B oszlop képleteit. Erre azért van szükség, mert mikor a következő For sor...Next ciklusban kitöröltetem az azonos értékeket, a függvény mindenhova 1-et írna, ha még mindig az szerepelne a cellákban.
A makró elején és végén lévő Application.ScreenUpdating a képernyőfrissítés letiltását, ill. engedélyezését határozza meg, arra jó, hogy egyrész ne villogjon a képernyő a lapok váltásakor, másrészt lerövidíti a futásidőt.
Szerintem nem a makro programnak kell oroszul tudnia, hanem futás előtt át kell állítani a beállításokat oroszra, majd utána vissza. Ilyen helyzetekre jó az elsődleges-másodlagos nyelvi beállítási lehetőség, billentyűkóddal váltogatható.