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 bevitel helye nálam G2. A laphoz rendelt eseményvezérelt makró:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$G$2" Then _ Target = UCase(Left(Target, 1)) & Right(Target, Len(Target) - 1) End Sub
Az Érvényesítés --> Lista beállításnál meg tudok adni egy listát, amiből választhat a felhasználó.
Azonban a kiválasztásnál a kis és nagybetűk között nem tesz különbséget. Tehát, ha a listában "Budapest" van írva, akkor manuálisan be lehet írni a "budapest" szót és azt - hibajelzés nélkül - tovább is engedi.
Meg lehet oldani, hogy csak a teljesen karakterhelyes szót fogadja el?
A következő "probléma" megoldásában szeretném a segítségeteket kérni.
Le szeretném védeni a cellákat, hogy ne lehessen felülírni a bennük lévő képleteket, szövegeket viszont az egyéni sorrend beállítást szeretném meghagyni a felhasználónak. De ha bekapcsolom a lapvédelmet, akkor a sorrendbe állítást sem engedi.
Próbáltam már, hogy kipipálom a "Rendezés" és az "AutoSzűrő" használatát, de akkor sem engedi az egyéni sorrend beállítást.
Van esetleg erre valakinek valami ötlete, megoldása?
Van egy változó rekordszámú "A" oszlopom, ami egy Kimutatás varázslóval előállított tábla érintett oszlopára hivatkozva tartalmaz adatokat. (1-100-ig).
A kérdés, hogy melyik szám, hányszor szerepel. (Fontos, hogy kizárólag azoknak a számoknak a darabszáma jelenjen meg a leválogatásban, amelyeket az "A" oszlop aktuálisan tartalmaz!)
Próbáltam a feladatot továbbra is Kimutatás varázsló segítségével megoldani, de nagyon alap szinten kezelem a kimutatásokat, ezért inkább függvénnyel szeretném az adatokat kinyerni.
Még annyit tennék hozzá, hogy bármelyik modulban lehet publikus változót definiálni és láthatja minden eljárás, ha a teljes "névvel" hivatkozol rá, ami így néz ki: modulnév.változónév.
Vagyis ha a Module1-ben van egy Public valt1 nevű változó, akkor azt a többi modulban Module1.valt1 formában lehet elérni.
Ja és azt nem mondtam, de nyilván egyértelmű, hogy a képen látható szubrutin automatikusan lefut a munkafüzet megnyitásakor, tehát megnyitja a munkafájlt, és értéket ad a Public változóknak.
Egyébként az induló kérdésedre nem választoltam. "Hol és hogyan kellene úgy deklarálnom valamiket, hogy az egész munkafüzetben az értékek elérhetőek legyenek? Egyáltalán lehet egész munkafüzetre vonatkozóan vagy csak modulszinten lehet meghatározni?"
A kérdés első felére a küldött mintám már megadja a választ. A Programon kívül deklarálod, tehát a Sub hívás előtt. A deklaráció célja az, hogy ne kelljen minden függvényhíváskor paraméterként átadni a változót a függvénynek.
Ezen túlmenően a public deklaráció a az egyes munkalapokon létrehozott subrutinokbna is érvényes.
Azt, hogy ne kelljen mindig megadni set-el megadni, azt úgy oldhatod meg, hogy a Project képernyőn a Thisworkbook-ra lépsz, és oda teszed a programot Private Sub workbook_Open() használatával, ami megnyitáskor automatikusan elindítja a programot , és ezzel értéket ad a változóidnak. A többi függvény mehet a modulokba, vagy a munkalapokra.
Sub-on belül működik a "set", de az lett volna a cél, hogy az adott modul elején csak egyszer kelljen "set"-elni és több sub esetén azt mindegyik sub-ra "értse".
Option Explicit Public wv As WorksheetView Public Wb As Workbook Public Wa As Worksheet
Sub teszt() Workbooks.Open Filename:="D:\Dokumentumok\Letöltések\Új form.xlsm" Set Wb = Workbooks("Új form.xlsm") Set Wa = Wb.Worksheets("Adatok") End Sub
Persze a public Wh-t javítsd Wa-ra, de nem ez volt a hiba oka.
Igen, adtam, de a "set" nem tetszik neki ezen a részen.
Option Explicit Public wv As WorksheetView Public Wb As Workbook Public Wh As Worksheet Set Wb = Workbooks("Új form.xlsm") Set Wa = Wb.Sheets("Adatok")
Nem teljesen értem a globális/publikus deklarálást, ebben kérnék némi segítséget.
Hol és hogyan kellene úgy deklarálnom valamiket, hogy az egész munkafüzetben az értékek elérhetőek legyenek? Egyáltalán lehet egész munkafüzetre vonatkozóan vagy csak modulszinten lehet meghatározni?
Public wv As WorksheetView Public Wb As Workbook Public Wa As Worksheet
Eddig elvileg jó, de hogyan tudnám beállítani ezeket?
Ha ez a rész alá beírom, hogy "Set Wa = Wb.Sheets("Adatok")" az nem jó.
Az egyesítéssel egyébként ajánlott óvatosan bánni, kellemetlen következményei is lehetnek a későbbiekben.
De ha már, akkor miért nem jó az, ha kijelölöd az egyesített területet egérrel, majd az Igazítás csoportban az Egyesítés gombra kattintasz. Újabb verziókban mér csak az ikon látszik, az "Egyesítés" szó nem:
Kérlek, segítsetek egy excel függvénnyel kapcsolattal (ha van ilyen). Teljesen laikusként kérdezek, és remélem érthetően magyarázom, hogy mi a feladatom... Üres cellák vízszintesen.. az egyikbe beírok egy szöveget, és a tőle jobbra levő x számú cellával egyesíti az én cellámat. Nem az adatokat kellene összevonni, üres cellákat kellne egyesíteni. Pl beírom, hogy cellla3, akkor az adott cellát a tőle jobbra található 2 cellával egyesíti, és az egyesített (korábban 3) cellában annyi legyen, hogy cella3.. Hogyan lehet ezt a legegyszerűbben megvalósítani az excelben?
Vagy bármilyen a szövegben nem szereplő karakter lehet elválasztó karakter, ebben az esetben egy cellába kerül ugyan a beolvasás, de utána az Adatok - Szövegből oszlopok - tagolt típust választva, egyéb elválasztójelnek beírva a sajátodat, szétbontja cellákra a szöveget.
az lenne a kérdésem, hogy data mátrix kód tartalomba milyen karaktert kell írni ahhoz, hogy ha kézi kódolvasóval beolvasom, akkor az excelbe külön cellába kerüljön a kód tartalom részei?
Zebra designer programmal lenne a kód generálva adatbázisból és nyomtatva, ezt a tartalmat kellene excelbe be illeszteni kézi olvasóval. Egy kód tartalom egy sor de külön oszlopba szeretném az egyes részeket az excelben.