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.
Kösz a választ! Amiből számomra igazolódott, hogy sajnos a stringek abc-be rendezése nem oldható meg a munkafüzet használata nélkül. Pedig reméltem, hogy lesz valamiféle munkafüzet nélküli megoldás a Novekvo és a Csokkeno tömbök létrehozására, hasonlatosan a numerikus adatokhoz, amelyeknél ez elérhető a large és small parancsokkal.
Lehet, hogy nem erre a megoldásra számítasz. A makrót régebben Micu írta a Prog.hu-n.
Az A1:A10 tartományt beviszi az eredeti tömbbe. Rendezéssel előállít egy novekvo, és egy csokkeno tömböt, amiknek az egyes tagjait le lehet kérdezni, ki lehet íratni. A tartományba az eredeti tömböt írja vissza.
Sub tömb_rendez() eredeti = Application.Transpose(Range("A1:A10"))
Na most olvasgatok a kapott linkről és pár oldalt a makrók használatáról! Úgyhogy egy kicsit lépek! Köszönöm a segítséget, adtál sok kiindulópontot, hogy miket is keressek, hogyan is álljon össze a dolog! Ha megakadnék, jelentkezni fogok! Sokat kell még tanulnom asszem :D Köszi mégegyszer!
Megcsináltam egy új munkafüzeten, de ugyanaz a probléma! Valahogy levédted? Mert ugyan azt megpróbáltam, amit Te. Nálam engedi a választást és az írást is, míg nálad csak választani lehet! Valahogyan át lehet másolni a dátumos oszlopot a makróiddal együtt az én munkafüzetembe, hogy működjön is?
Az lenne a kérdésem, hogy lehet-e egy egydimenziós vba-tömbben levő stringeket abc sorrendbe rendezni? Ha igen, hogyan? Nekem az is jó lenne, ha a sorbarendezés egy másik tömbbe történne.
Az első sikerült. Sajnos a 2.-nál listából tudok választani, de ha akarok, akár beírni is tudok bármit! A 3. : Igen, azt a dátumot akarom, amikor a sort szerkesztették és utána már, ha mentve van, ne lehessen szerkeszteni!
Találkoztam hasonló táblázattal, ami korlátozta a felhasználók jogait! PL: én csak egy adott listából tudtam választani, ki is töltöttem a sorokat, majd el is mentettem! Miután újra beléptem az általam kitöltött sort már nem tudtam szerkeszteni, de az, aki csinálta a táblázatot, tudta! Szóval az én hozzáférésem korlátozva volt! Szeretném valami ilyesformán megcsinálni és ki is próbálni!
1: Hogyan tudom azt megcsinálni, hogy csak egy adott mennyiségű oszlop legyen látható? 2: Tegnap sikerült RHCPgergosegítségével listázni az adatérvényesítéssel, de szeretném azt is megcsinálni, hogy csakis a listából lehessen választani, mást beírni ne lehessen! Próbáltam ilyen-olyan védelemmel ellátni az adott oszlopokat, de nem sikerült! 3: Az egyik oszlopot dátum mutatására szeretném használni! Szóval azt ne lehessen módosítani, szeretném, hogy a sor kitöltésével automatikusan kitöltse az adott dátummal! Szóval, ha a sort elkezdem kitölteni, a dátum oszlop azonos sorában megjelenjen a dátum! Bár ezt nem hiszem hogy meg lehet csinálni, de hátha!
Remélem jól leírtam a kérdéseket, amúgy 2007-es verzsönt használok, ha számít!
Áttöltés után kézzel dolgozik az illető ezért kell a tábla végére menni vagy kézzel, vagy automatikusan. Ez csak egy kényelmi ok és nem funkcionális azaz a program működését nme érinti. A megirt programjaimnál mindig ügyelek arra, hogy minél kevesebbet kelljen klikkelni, keresgélni azaz a program kínálja magát. Manapság ezt kicsit bombasztikusan felhasználói élménynek nevezik. Mindig abból indulok ki, hogy a számítógépet nem ismerőknek is tudnia kell kezelni.
Sub torlo() Dim c As Range With Columns(1) Set c = .Find(what:="xy", LookIn:=xlValues, lookat:=xlWhole/xlPart) If Not c Is Nothing Then Do c.EntireRow.Delete Set c = .FindNext Loop While Not c Is Nothing End If End With End Sub
Egy kis magyarázat hozzá: lookat paraméter azt mondja meg, hogy teljesen egyeznie kell a cellában a szövegnek, vagy csak részben. Ha csak részben, akkor xlPart. Ekkor minden olyan sort kitöröl, ahol xy előfordul a cellában valahol.
Fontos, hogy makró legyen? Egszerű szűréssel is egjelenítheted azokat a sorokat, ahol egy oszlop cellái bizonyos szöveget tartalmaznak, majd az egészet kijelölve törölheted.
1. autofilter bekapcsolása 2. az A oszlopnál custom szűrés (contains "xy") 3. sorok kijelölése, egész sor törlése
Makrót se lenne olyan nehéz írni, de így egyszerűbb, ha csak egyszer kell megcsinálánod.
Egy olyan makróra lenne szükségem, ami megkeresne egy adott szöveget "xy" az első oszlopban, és miután megtalálta annak a sorát kitörölné, majd tovább keresne az A oszlopban ugyanarra a kifejezésre, addig amig az összes sort ki nem törölte azzal a szöveggel.
Kösz! Múködik. De lenne 2 kérdésem: Miért kell a transpose? Ugyanis ha kiiktatom az Option Explicitet ami szükséges a makródhoz, akkor beolvassa a ranget anélkül is. Másrészt meg itt mit transzponál?
Ami neked kell az a "Data Validation" avagy adatérvényesítés. Ha ezt használod, be lehet állítani, hogy egy adott cella (vagy tartomány) csak egy lista értékeit vehesse fel. Nem ablakban ugrik fel, hanem lenyíló listából lehet választani.
1. jelöld ki azt a cellát/tartományt, ahol be akarod kapcsolni az adatérvényesítést
2. data / data validation (valami ilyesmi, csak angol 2003-as excelben tudom)
3. válaszd ki, hogy listából akarod, itt meg lehet adni, hogy az a lista hol van
4. OK
Kb. ennyi, itt van egy részletesebb magyar leírás:
A beírás korlátozását az Adatok->Érvényesítés menüpontban tudod elvégezni. Itt beállítod, hogy megengedve lista. Forrásnak csak azonos munkafüzetben levő adatokra hivatkozhatsz, de az adatok lehetnek másik munkalapon. A listát elnevezed, pl gyümölcsök.
Akkor a forrásban hivatkozhatsz így: =gyümölcsök.
Akár az egész oszlopot is kijelölheted érvényesítésre, akkor minden egyes cellára igaz lesz az, hogy csak a megadott értékek közül lehet választani.