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.
Szerintem egyszerübb ha a cellaegyesítés megszüntetésére is, meg a létesítésére is lekattogtatsz egy makrót, amiket aztán a problémás rutinok elé-után beiktatsz.
Oké, oké. Meghajlok bölcs érveid előtt. Majd szólj rám, ha pongyolán fogalmazok :)
Viszont gyakorlati szempontból ("hogy magyarázzuk el az idelátogatóknak" c. kérdés) nincs sok jelentőssége. Aki ismeri és érti az adatbázis általad preferált definícióját, annak nem kell magyarázni. Aki nem ismeri v. nem érti, annak csak azt lehet mondani, hogy "most" kell átváltani Accessre, és "azért, mert jobb lesz így, hidd el" :)
Tágabb értelemben autóút minden útfelület, ahol autók közlekednek, a makadámúttól az autópályáig. De egy szakmai fórumon mégis illik pontosan használni a fogalmakat... A szakkifejezések jelentését nem lehet etimológiailag megközelíteni.
Persze különböző szigorúságú definíciók léteznek, és az én egyetemi adatbázistanárom még a dBase típusú rendszereket és az Accesst is filekezelő rendszereklnek mondta, mert nem elégítik ki az adatbázis-kezelőkkel szemben támaszott legszigorúbb követelményeket. A dBase esetében ez abszolút érthető számomra is.
Egy szakmai fórumon szerintem alapnak kéne tekinteni, hogy egy adatbázis legalább első normálformába rendezett táblákból áll, és tartalmaz a saját szerkezetére vonatkozó információkat. Még akkor elég sok mindentől eltekintettünk. :-) A riport az már más dolog, azzal tényleg lehet szabadabban bánni. De ha összemossuk az alapvető különbségeket, akkor hogy magyarázzuk el az idelátogatóknak, hogy mikor és miért érdemesebb átváltani pl. Accessre?
a képen látható DREAM TEAM'98 FC szövegnek nem tudja valaki így ránézésre,hogy mi lehet a font típus neve? régebbi excelben volt,de nem emlékszem már rá, most meg kellene...előre is köszönöm :-)
Igen, emlékszem, hogy valaki a törzsvendégek közültöbbször szóvátette a különbséget, de arra nem, hogy ki volt.
Alapjában véve egyetértek, ugyanakkor szerintem tágabb értelemben minden adatbázis, amiből adatokat vesznek ki feldolgozás céljából. Csak gondold végig, mit jelent maga a szó.
Hasonlóképpen, minden végeredmény riport, ami a feldolgozás eredményeképp születik.
De értem, ha Te nem ebben az értelemben használod.
Nem hiszem, úgy elég nyakatekert lenne, csak egy sima sablonra gondoltam, a kód abban a munkafüzetben van, ahol a tényleges adatok (azt használjuk, onnan indítjuk az akciót).
For l = 3 To 13 Step 2 'Range(Cells(sor + 1, l), Cells(sor + 1, l + 1)).MergeCells = True ' Megosztott munkafüzetben nem működik. Range(Cells(sor + 1, l), Cells(sor + 1, l + 1)).HorizontalAlignment = xlCenterAcrossSelection Cells(sor + 1, l).HorizontalAlignment = xlCenter Cells(sor + 1, l).Value = Cells(sor, 2).Value + (l - 1) / 2 - 1 ' A felette levő sor B oszlopából veszi a kezdődátumot Cells(sor + 1, l).NumberFormat = "mmmm d." Next l
Nem azt a szintaxist használtam a range-ben, mint te, mert a ciklusváltozót nehéz betűvé alakítani, de nem hiszem, hogy ez a gond, mert a kikommentezett sor ugyanezzel simán működik, ha nincs megosztva a munkafüzet.
Kipróbáltam, attól sem függ, hogy szegélyezek-e utána és attól sem, hogy ráeresztek-e explicit egy középre igazítást a következő sorban. Egyszerűen a bal oldali cellában marad.
Hát ez a megfelelő elhelyezés az, ami nem megy nekem. Tegnap este óta próbálom, keresem fórumokon a megoldást, de nem találom. Pedig a súgó szerint működnie kellene: "In a Frame that contains other controls, the focus moves to the first control in the Frame, and subsequent keyboard events apply to the control that has the focus."
Annyit látok, hogy másoknak is van problémája ezzel.
Próbáltam a setfocus utáni sorba betenni a doevents parancsot, de a füle botját sem mozgatja. Viszont ha megállítom a futást egy breakpoint beiktatásával, és a megállás után f5-el továbbengedem, akkor érvényre jut a parancs.
Ha tudod a rögzítés utáni első sor számát (legyen a 3. sor) és az első oszlop betűjelét (legyen C), akkor range("C3").select, vagy cells(3,3).select. Erre gondoltál?
Talán már feltűnt, hogy háklis vagyok rá, ha összemossák a táblázatot az adatbázissal (talán mert egy adatbázis szerető gazdájaként élem a hétköznapjaimat). Igazából az én hibám, hogy nem kezdtem a riport szónál tiltakozni, csak éppen nem volt időm-erőm ezen szőrözni. Van egy sokfülű munkafüzet pü. adatokkal, amiből időnként újat kezdünk, és amikor újat kezdünk, akkor a régi munkalapjairól el kell végezni az összegzést, egy alkalommal, ennyi.
A rendszert örököltem, már így is sokat fejlesztettem rajta, és ha rajtam múlna, adatbázisban lenne, és nem lenne vele ennyi problémám, de erre még nem állunk készen.
Userformmal kapcsolatban kérek segítséget. Azt hogyan lehet befolyásolni, hogy a formon található boxok közül melyikre ugorjon elsőként a vezérlés? A sorrrendjüket tudom, hogy a tab order szabályozza. De, hogy melyikkel kezdődjön a munka, azt nem.
Nálam a következő a helyzet: Ha a programban inicializásáskor szépen előkészítem őket adatbeadásra, akkor azt teszi, amit gondolok, a tab order szerinti elsőre ugrik.
Hanem amikor már meglévő adatrekord módosítását készítem elő, azaz a már korábban munkalapra mentett adatmezők tartalmát kiolvasom és az értéket kiinduló értékként teszem a boxba (vegyesen vannak textboxaim és comboboxaim), akkor számomra rejtélyes okokból valahova a közepére áll. De, hogy miért, arra képtelen vagyok rájönni. Nem arra, amelyiknek először adtam értéket, nem is arra, amelyiknek utoljára. Nem is névsor szerint. Egy jó, hogy legalább következetesen ugyanarra az elemre lép elsőként, tehát feltehetőleg valami beállítja így, így hátha nekem is lesz módom befolyásolni a dolgot.
Köszönöm. Kérdésedre, hogy miért Excel, miért nem Access, egyszerű a válasz. Még soha nem dolgoztam az Accessel, és bár sejtettem, hogy az megfelelő lenne, nem mertem alapismeretek nélkül belevágni, mert nem tudtam felmérni, hogy az alapok elsajátítása mennyi időt igényelne.
Az Excel programozás alapfogalmaival valamilyen szinten már megismerkedtem korábban, most az adatbevitel volt az, amit nulláról kellett megtanulnom. De ha ezzel a programmal most kész vagyok, meg fogom nézni az Access-t.
Ha ez egy riport, akkor miért a megosztott munkafüzetben van? A riport egy pillanatkép az adatbázis állásáról, bizonyos szempontok szerint összeállítva. Ha naponta készítenek tíz riportot, az mind benne van a megosztott workbook-ban? Nekem úgy lenne logikus, hogy a kolléga dolgozik a megosztott munkafüzetben, aztán megkattint egy gombot, erre a program létrehoz egy független munkafüzetet saját gépen, és abba generálja a riportot. Azt utána esetleg elmenti archiválás céllal, vagy elküldi a főnökének, vagy ilyesmi.
MÉg az az út is nyitva áll, hogy az alsó táblázat külön lapra kerüljön, csak nem akartam, mert így is annyi füle van, mint az oroszoknak együttvéve, és gyengék a gépeink.
Egyébként az adafeldolgozó munkalapokon is kell a fejléc, mert annak alapján tudnak beleírni a dolgozók, de azt nem kell makróval kezelni, mert fixen helyezkedik el a lap tetején.