Keresés

Részletes keresés

Sánta Kutya (SK) Creative Commons License 2013.05.13 0 0 21305

Na ez viszont valamiért nem megy.

 

    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.

Előzmény: Törölt nick (21291)
Sánta Kutya (SK) Creative Commons License 2013.05.13 0 0 21304

Köszönöm, ez bejött! Pimre megoldásával magam is kísérleteztem már, de az nem működik.

Előzmény: Törölt nick (21302)
pimre Creative Commons License 2013.05.13 0 0 21303

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. 

Mit csinálhatok rosszul?

 

Előzmény: Törölt nick (21296)
Törölt nick Creative Commons License 2013.05.13 0 0 21302

ActiveWindow.ScrollRow  = 1

 

vagy általánosabban

 

Dim WB As Workbook

Set WB = Workbooks("ez az amaz.xls")

WB.Windows(1).ScrollRow=1

 

esetleg

 

ThisWorkbook.Windows(1).ScrollRow=1

Előzmény: Sánta Kutya (SK) (21300)
pimre Creative Commons License 2013.05.13 0 0 21301

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?

Előzmény: Sánta Kutya (SK) (21267)
Sánta Kutya (SK) Creative Commons License 2013.05.13 0 0 21300

Erre a kérdésre még mindig várom a megfejtéseket! :-)

Előzmény: Sánta Kutya (SK) (21267)
Sánta Kutya (SK) Creative Commons License 2013.05.13 0 0 21299

Mitől függ, hogy rendelkezésre állnak-e egy táblázat előző verziói a tulajdonságoknál? Ez Excel-kérdés vagy Windows-kérdés?

Ha leveszem és visszateszem a megosztást, az okozhatja az előző verziók megszűnését?

Sánta Kutya (SK) Creative Commons License 2013.05.13 0 0 21298

De azért érdekel az a kódrészlet, amivel új munkafüzetet lehet létrehozni.

 

 

A következő séma kéne:

Hozzál létre "Pista hh.nn" néven új munkafüzetet a "Jóskapista" sablonból. (Aktuális dátum)

Ha már van ilyen, írd felül.

Ha nem sikerül a felülírás, mert zárolva van, legyen "Pista hh.nn-1" stb.

Előzmény: Törölt nick (21290)
Sánta Kutya (SK) Creative Commons License 2013.05.13 0 0 21297

Adatbázisról ki beszélt itt? :-)

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.

 

Előzmény: Törölt nick (21290)
Törölt nick Creative Commons License 2013.05.13 0 0 21296

Nem tudom megmondani, miért teszi oda, ahova, viszont egy megfelelően elhelyezett SetFocus parancs csodákra képes :)

Előzmény: pimre (21295)
pimre Creative Commons License 2013.05.13 0 0 21295

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.

Redlac Creative Commons License 2013.05.11 0 0 21293

Köszönöm a segítséget, tökéletes lett.

Előzmény: tbando (21269)
pimre Creative Commons License 2013.05.11 0 0 21292

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.

Előzmény: Törölt nick (21284)
Törölt nick Creative Commons License 2013.05.11 0 0 21291

Range("A2:C2").HorizontalAlignment = xlCenterAcrossSelection

Előzmény: Sánta Kutya (SK) (21289)
Törölt nick Creative Commons License 2013.05.11 0 0 21290

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.

Előzmény: Sánta Kutya (SK) (21286)
Sánta Kutya (SK) Creative Commons License 2013.05.11 0 0 21289

Hoppá, erre nem is gondoltam, hogy lehet VBA-ban két adott cella közepére igazítani egy cella tartalmát?

Lehet, hogy ez lesz a legegyszerűbb, csak akkor meg a szegélyezés válik bonyolultabbá.

Előzmény: Törölt nick (21283)
Sánta Kutya (SK) Creative Commons License 2013.05.11 0 0 21288

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.

Előzmény: Sánta Kutya (SK) (21286)
Sánta Kutya (SK) Creative Commons License 2013.05.11 0 0 21287

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.

Előzmény: Törölt nick (21285)
Sánta Kutya (SK) Creative Commons License 2013.05.11 0 0 21286

Ez egy riport. :-) Csak két táblázat van egymás alatt, és nem tudom, hány soros lesz a felső, ezért kezdtem úgy, hogy munkalap takarít, felső táblázat kész, alsó fejléc formáz...

Amit még lehetne, hogy külön takarítana az alsó táblázat fejléce fölött és alatt, előbb törölve a sorokat, aztán egyenként beszúrva annyit, ami kell... Sokkal bonyolultabb.

Vagy esetleg törölné az összes sort (nem tartalmat) a kilencediktől kezdve a maxsor-adikig, aztán a megfelelő lélektani pillanatban beszúrná a kívánt három sor fejlécet egy szervizmunkalapról másolva. Ezt elfogadja egy megosztott munkafüzet? Szerintem igen, mert sorbeszúrást meg törlést rendszeresen csinálunk (azt sem értem, miért kevésbé veszélyes, mint cellát egyesíteni, ebben még mindig nem vagyok meggyőzve, de mindegy). Valaki tud segíteni egy ilyen kóddal?

Előzmény: Törölt nick (21285)
Törölt nick Creative Commons License 2013.05.11 0 0 21285

Szerintem fejlécet a riport kapjon, ott van értelme, az adatfeldolgozásra szánt munkalapokon fölösleges. Vagyis: legyen egy riport template munkalap, előre megformázva, cellák egyesítve, stb. Erre a munkalapra csak meghatározott helyekre kelljen meghatározott adatokat VBA kóddal beírni, és ennyi. Minden egyéb művelet olyan munkalapokon történjék, ahol nincs cellaegyesítés. Az egyesített cellák kezelése VBA-ban egyenlő az ön-tökönszúrással és csak erős idegzetűeknek ajánlott. Esetleg alacsony vérnyomással küzdőknek.

Előzmény: Sánta Kutya (SK) (21278)
Törölt nick Creative Commons License 2013.05.11 0 0 21284

1. A különféle vezérlők betűtípusát a Font property állítja be. Ez tervező módban is elérhető, és a látszat ellenére nem csak a betűtípus nevét, hanem méretét, Bold, Italic tulajdonságát is lehet vele állítani.

2. Én a DoEvents utasítást próbálnám meg, valahogy így:

 

    Application.Cursor = xlWait
    DoEvents
    ThisWorkbook.Save
    Application.Cursor = xlDefault

3. Kinek hiszel te engem? :)

Fogalmam sincs, hogy a szerzők mit gondoltak akkor, amikor ezt így oldották meg.

 

4. Szerintem teljesen jó az új űrlap beiktatása. A funkciók logikus csoportosítása és elkülönítése talán így oldható meg a legtisztábban. Vannak persze más lehetőségek is, pl ha magán az adatbeviteli űrlapon van egy választó funkció, amellyel meglévő rekordok közül lehet választani módosításra, és amely elrejthető Visible = False beállítással, ha új rekordról van szó. De tapasztalatom szerint a leendő felhasználók informatikai intelligenciaszintjére tekintettel általban nem érdemes komplexebb megoldásokat erőltetni, inkább törekedni kell a minél egyszerűbb, lehetőleg csak szándékosan eltéveszthető megoldásokra.

 

Nekem is felmerült egy kérdésem. Miért Excel, miért nem Access?

Előzmény: pimre (21262)
tbando Creative Commons License 2013.05.10 0 0 21282

=Ha($a$1=1;eredmény;"")

 

A képlet beírása után persze nem árt, ha írásvédetté teszed a cellákat.

 

Egy másik megoldás, hogy az eredménycellákba minden faxni nélkül beírod az eredményeket, de a láthatóságukat feltételes formázással szabályzod. Pl ha $a$1="" akkor a fontok szine egyezzen meg a cellaháttér színével (lehet választani a fehérszint is). Ekkor az eredmény csak akkor fog látszódni, ha a1-be beírsz valamit. A cellák írásvédetsége természetesen itt is megfontolandó.

 

A fifikás diákok persze még igy is leleshetik az eredményt a szerkesztőlécről. Ez ellen a szerkesztőléc kiiktatásával védekezhetsz.

 

 

Előzmény: syrius (21280)
Redlac Creative Commons License 2013.05.10 0 0 21281

Némi angol tudás hiányom van :-)

Előzmény: Törölt nick (21268)
syrius Creative Commons License 2013.05.10 0 0 21280

AZt szeretném, hogy bizonyos cellák tartalma csak egy adott cella értékétől függően jelenjen meg. Konkrétan, adott egy csomó matekfeladat generálva, eredményekkel együtt, ám azt nem akarom láttatni, csak ha pl A1 = 1, szóval ez a cella egyfajta kapcsoló lenne. Segítsetek :-)

Redlac Creative Commons License 2013.05.10 0 0 21279

Köszi, szerintem így menni fog.

 

Kicsit később összerakom.

Előzmény: tbando (21269)
Sánta Kutya (SK) Creative Commons License 2013.05.10 0 0 21278

Miért, mi bajod vele? Egy táblázathoz a formázás is hozzátartozik, és a fejléckészítésben nehezen nélkülözhető az egyesítés.

 

Előzmény: Törölt nick (21276)
Sánta Kutya (SK) Creative Commons License 2013.05.10 0 0 21275

De ugyanennyi erővel írhatnak mind a ketten ugyanabba a cellába is... Azt is kezelni kell valahogy.

Előzmény: Törölt nick (21274)
Sánta Kutya (SK) Creative Commons License 2013.05.10 0 0 21273

Na mindegy, a tanulság megvan megosztott munkafüzet makróit mindig megosztva kell tesztelni...

Előzmény: Sánta Kutya (SK) (21272)
Sánta Kutya (SK) Creative Commons License 2013.05.10 0 0 21272

Talán ez a válasz: http://www.mrexcel.com/forum/excel-questions/654913-macros-no-longer-work-when-workbook-shared.html

Megosztott munkafüzetben egyáltalán nem lehet cellákat egyesíteni vagy szétbontani. Suxxxx&#^˘°^˘°^#@@#&&{&@{>#&˘!!!!

 

You do not expect to change the following features, which cannot be modified after a workbook is shared: merged cells, conditional formats, data validation, charts, pictures, objects (including drawing objects), hyperlinks, scenarios, outlines, subtotals, data tables, PivotTable reports, workbook and worksheet protection, and macros.

 

Egy csomó érthetetlen korlátozás. :-((((( Még jó, hogy dolgoztam vele, most tervezhetem át a táblázatot ortopédra.

Előzmény: Sánta Kutya (SK) (21271)
Sánta Kutya (SK) Creative Commons License 2013.05.10 0 0 21271

A Google nem nagyon segít, úgy tűnik, ez a hibakód kb. egymillióféle hibaüzenethez tartozik.

Más is beleszaladt ebbe: http://www.mrexcel.com/forum/excel-questions/223690-share-workbook-mergecells-property-error.html, de válasz ott sincs.

Előzmény: Sánta Kutya (SK) (21270)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!