Keresés

Részletes keresés

Törölt nick Creative Commons License 2013.01.30 0 0 20230

sima *.xls-ként is próbáltad?

Előzmény: Rása Rudolf (20229)
Rása Rudolf Creative Commons License 2013.01.30 0 0 20229

Szeretném kérni valaki segítségét abban, hogy mi lehet az oka, hogy a hét eleje óta nem tudom szerkeszteni a Nokia Lumia 800-as telefonomon az olyan Excel fájlokat, amelyeket előtte a Skydrive-ban módosítottam.
Üzenet: "Nem szerkeszthető a munkafüzet"

Ha létrehozok a neten a Skydrive-ban az Excel Web Apps-ban egy Excel fájlt, és csak 1 betűt írok bele, már akkor sem tudom szerkeszteni a mobilomon a Mobile Office-ban. Már alaphelyzetbe is visszaállítottam a Mobile Office-t, de hiába. A fájl kiterjesztése .xlsx, tehát még ez sem lehet gond.

Kérem valaki próbálja ki, és jelezzen vissza, hogy más is tapasztalja-e, mert nagyon nagy segítség lenne a munkámhoz, ha újra működne.

Köszönettel:

Rudolf

djmorphy Creative Commons License 2013.01.29 0 0 20228

Sziasztok!

 

 

A 19982 kérdésemben segítettetek, hogy egyszerűen beírom a legnagyobb értéket és addig a legördülő listából átvált raktáron felirattal(egy sima ha() fgv-el)

Most az lenne a kérdésem, hogy meg lehet-e oldani valahogy ne a listából kelljen nekem egyesével kiválogatni a sorszámhoz tartozó "visszahozva" feliratot hanem csak beírom egy cellába egymás után az értékeket és átváltja mert nagyon széles a táblázat.

 

Példával(hátha értelmesebb :D)

 

 

E:KR-ig tart a táblázat. 

Visszahozták pl a 50-51-52 sorszámot. Ez EY23,FB23,FE23.

És azt szeretném, hogy az "50", "51", "52"-t beírjam az A20-ba egymás után és a "raktáron"-ról átbillen a "visszahozva".

 

A problémám az, hogy ezt heti rendszerességel kell ami nem 3 tételt jelent hanem vagy 50-60-at. És egyesével átbillenteni nagyon nagy "élvezet" főleg, hogy nem is növekvő/csökkenő sorrendbe hozzák hanem össze vissza...Mert gépelni szerintem mégis csak gyorsabb mint keresgélni E-től KR-ig.

 

Meg lehet ezt valósítani? :)

 

Előzmény: djmorphy (19982)
pimre Creative Commons License 2013.01.28 0 0 20227

Kösz a mintákat. Megnézem. Egyébként azt hiszem, sejtem az Activecellel kapcsolatos kifogásaid okát. Amikor még programozásból éltem (ez még a DOS idején volt), akkor sokat foglalkoztam a strukturált programozással, és igyekeztem a programjaimat is ebben a szellemben felépíteni. 

 

A VBA-ban nem sokkal vagyok túl egy kezdő szintjén, ezért itt nem foglalkoztam eddig ilyesmivel, de feltételezem, hogy hasonló elvek miatt javasolod kerülni az ActivesheetActivecell, vagy Selection hivatkozásokat. És ebben egyetértek. És feltételezem, hogy a sendkeys elleni kifogásod is hasonló tőről fakad. Szóval nem beszélsz összevissza:-)

Előzmény: Retro Image (20222)
pimre Creative Commons License 2013.01.28 0 0 20226

Érdekes, nálam tbando makrója tökéletesen működik. És még az általa jelzett hiba sem jött elő. Persz nem próbálgattam órákon át. Bár amikor kipróbáltam egy Notebookon, ott előfordult, hogy a hüvelykujjam hozzáért a touchpad-hez, és elugrott a kursor.

Előzmény: Retro Image (20223)
tbando Creative Commons License 2013.01.28 0 0 20225

Elfogadom. Tényleg okosabb lehetett volna activecellel. De a sendkeys jutott az eszembe. Azt abszolut nem értem, hogy nálad miért nem müködik. Nálam, eltekintve az időnkénti NUMLOCK-os gubanctól, kifogástalanul müxik.

 

ps. Nálam a sendkeys csak olyan problémát okozott idáig, hogy amikor F5-tel indítottam a makrót, beleírt a makróba :((.

Előzmény: Retro Image (20223)
Retro Image Creative Commons License 2013.01.28 0 0 20223

Nekem a makród semmit nem csinál :o)

Pontosabban: a 7-es gombra kiírja, hogy VÉGE. De a többi gombra nem reagál. Pedig a szubrutinok meghívódnak, ellenőriztem törésponttal.

Egyébként rossznyelvek szerint a SendKeys még jobban kerülendő, mint az Activecell.

Szóval lehet, hogy pimre most azt fogja gondolni, összevissza beszélek, de ezt a feladatot mégis inkább Activecell-lel kellene megoldani, pl. így:

 

Sub bill1()

    Activecell = 1

    Activecell.Offset(, 1).Activate

End Sub

 

 

Előzmény: tbando (20216)
Retro Image Creative Commons License 2013.01.28 0 0 20222

"Ezt is meg lehet oldani hasonló módon?"

 

Persze, teljesen ugyanaz a módszer.

MsgBox Workbooks("akármi.xls").Worksheets("Munka128").Range("A4").SpecialCells(xlLastCell).Row

 

Bár a magam részéről jobban csípem ezt a megoldást:

 

Dim ML As Worksheet

Set ML = Workbooks("akármi.xls").Worksheets("Munka128")

MsgBox ML.Range("A" & ML.Rows.Count).End(xlUp).Row

 

A két kód nem ekvivalens.

A második az A oszlop utolsó (legalsó) töltött celláját találja meg, függetlenül attól, hogy a többi oszlopban mi van.

Az első viszont figyelembe veszi a teljes munkalapot, és (azt hiszem) az utolsó nem üres sor és az utolsó nem üres oszlop metszetét találja meg. De őszintén szólva nem vagyok teljesen képben a .SpecialCells(xlLastCell) elvi működését illetően.

Előzmény: pimre (20217)
tbando Creative Commons License 2013.01.28 0 0 20221

A {numlock} beiktatatása szerintem nem túl jó ötlet.  Inkább kéne valami Numpad:=true féle, ha van egyáltalán valami ilyesmi.

 

Praktikusan egyébként nem okoz túl nagy gondot. Amikor elkezd hülyéskedni, megnyomod a numlockot én onnantól jó. 

Előzmény: Törölt nick (20219)
tbando Creative Commons License 2013.01.28 0 0 20220

Te is tapasztaltad?

 

Előzmény: Törölt nick (20218)
pimre Creative Commons License 2013.01.28 0 0 20217

Igazad van, és a tegnapi válaszod nyomán végülis így oldottam meg a feladatot, tehát az 1. lapon állva olvastam be a 2. munkalap adatait. Így valóban elegánsabb. Sajnos nem vagyok profi az Excel VBA parancsait illetően.

Egyetlen ponton nem tudom, hogy lehetett volna kiváltanom a munkalapváltást. A 2. munkalap utolsó sorának meghatározását csak az ActiveCell.SpecialCells(xlLastCell).Row paranccsal tudom elérni. Ezt is meg lehet oldani hasonló módon? 

Előzmény: Retro Image (20215)
tbando Creative Commons License 2013.01.28 0 0 20216

A makróm időnként megmagyarázhatatlan hibát produkál.  Úgy tűnik, hogy a füzetbehívást követő első bill_15 indítása után fordul elő, de akkor sem mindig, csak néha. Az szok ilyenkor előfordulni, hogy az első értéket még beírja, majd utána a NUMLOCK kikapcsol, az ember meg csak nézi, hogy hova is ugrott a kurzor. A NUMLOCK bekapcsolásával a hiba ugyan gyorsan reparálható, és utána a működés problémamentesnek. A kérdésem csak annyi, hogy a makróm bugos vagy az excel? 

Előzmény: tbando (20199)
Retro Image Creative Commons License 2013.01.28 0 0 20215

"Egy ponton vitatkozom veled."

 

Szeretek vitatkozni :o)

 

"Erről az a véleményem, hogy rég eláshatnám magam a programozási ismereteimmel, ha megengedném magamnak azt, hogy a program bármely pontján ne legyek halálosan biztos abban, hogy éppen melyik munkalapon állok."

 

Erről az a véleményem, hogy ha valaki Activesheet, Activecell, vagy Selection hivatkozásokat használ, az nem lehet teljesen biztos benne, hogy éppen hol áll. Számtalan lehetőség van, hogy hol tud kisiklani a biztosnak hitt hivatkozás.

 

Másrészt meg sose értettem, hogy minek váltogatni a lapokat, ha egyszer a Munka1 lapon "állva" a Munka2 lap bármelyik cellája, de még a [Munkafüzet2.xls]Munka2 lap bármelyik cellája is elérhető és lekérdezhető anélkül, hogy arra "állnánk rá". A Select utasítás csak arra jó, hogy vibráljon a kép a makró futása közben. (Persze ez is lehet cél, de akik a legtöbb Selectet használnak, azok általában le is tiltják Screenupdating=False paranccsal :o)))

 

Egyébként nincs mit.

:o)

Előzmény: pimre (20214)
pimre Creative Commons License 2013.01.27 0 0 20214

Köszönöm. Igen, ezeket a hivatkozásokat máskor már használtam is, amikor más fájlból kellett adatokat beolvasnom, meg amikor több különböző munkalapról kellett adatokat összehoznom. Csak itt egy viszonylag egyszerű feladatról volt szó, ahol csak egy pillanatra megyek át egy új munkafüzetlapra néhány adat beolvasásáért aztán megyek is vissza a másikra, ahol az adatok vannak. Szóval szó sem volt lustaságról, csak szükségtelen volt a teljes hivatkozás használata. Mindenesetre a DIM és Set sorokat köszönöm, valahogy eddig nem használtam ilyen megoldást.

 

Egy ponton vitatkozom veled. Azt írod: "...ha biztos akarsz lenni benne, hogy a hivatkozásod nem téveszt célt, mindig odateszed őket". Erről az a véleményem, hogy rég eláshatnám magam a programozási ismereteimmel, ha megengedném magamnak azt, hogy a program bármely pontján ne legyek halálosan biztos abban, hogy éppen melyik munkalapon állok.

 

Amit a sorszámra való hivatkozásról mondasz, abban teljesen igazad van. Csak itt speciális eset volt, hogy nem akartam a felhasználó kezét megkötni a munkalap elnevezésében, hanem azt írtam le a programleírásban, hogy a működés feltétele, hogy az első munkalapon legyenek az adatok, amivel számol, és a másodikon a kihagyandó dátumok listája.

 

Persze aztán megoldottam a dolgot azzal, hogy a munkalap nevét szerencsére megengedte a 2007-es is kiolvasni, így a cells hivatkozásokat már meg tudtam adni a munkalap nevével.

 

Még egyszer köszönöm.

 

Előzmény: Retro Image (20212)
hyperstoke Creative Commons License 2013.01.27 0 0 20213

Köszi mindenkinek az erőfeszítést, ki fogom próbálni, csak sajna nem tudtam várni és reggel korán elkezdtem, és mostanra végezve be is fejeztem az összes kérdőív rögzítését. De mindeképpen ki fogom próbálni a héten a megoldást, amint lesz rá egy pici időm (először a kiértékelést kell megcsinálnom :) ), mert még kell majd jópárszor hasonlót csinálnom. 

 

Mindenesetre ezer hála a segítségért.

Retro Image Creative Commons License 2013.01.27 0 0 20212

Az egzakt hivatkozás egy cellára így néz ki:

 

Application.Workbooks("munkafüzet neve").Worksheets("munkalap neve").Cells(sor, oszlop)

vagy

Application.Workbooks(1).Worksheets(2).Cells(sor, oszlop)

 

Ebből a kékkel írt rész elhagyható, de ha elhagyod őket, akkor az Excel azzal helyettesíti, amit jónak lát.

Olyannal még nem találkoztam, hogy az Application qualifier elhagyásából probléma lett volna, de a másik kettő fontos, és ha biztos akarsz lenni benne, hogy a hivatkozásod nem téveszt célt, mindig odateszed őket. És ez nem is jelent feltétlenül sokkal több gépelést. Csak egy Worksheet típusú változó kell:

 

Dim ML As Worksheet

Set ML = Application.Workbooks(1).Worksheets(2)

 

és innentől kezdve plusz 3 karakter az egzakt cellahivatkozás:


ML.Cells(sor, oszlop)

 

Javaslom a kódod átalakítását, és szertintem csont nélkül menni fog xl2007-ben is.

 

A másik dolog:

Sorszámmal hivatkozni a munkalapra veszélyesebb, mintha a nevét adnád meg.

Ha névre hivatkozol, és a felhasználó átnevezi a munkalapot, akkor max. hibát dob a makró és leáll.

Ha sorszámra hivatkozol, és a felhasználó egy munkalap-beszúrással átrendezi a képet, akkor a makró esetleg hiba nélkül lefut, és fel sem tűnik senkinek, hogy fontos adatokat írt felül egy másik munkalapon.

 

Ezekre egy lehetséges megoldás, ami munkafüzeten belül viszonylag bolondbiztos:

Nevezd el a cél munkalap A1 celláját pl. "kapocs" néven, és legyen a név munkafüzet hatályú.

Utána akárhogy nevezgeti a felhasználó a munkalapot, azt az Excel névdefiníció automatikusan leköveti, és mindig meg lehet találni a munkalapot így:

Set ML = Range("kapocs").Parent

 

Kivéve, ha a felhasználó törli a munkalapot :o)

Előzmény: pimre (20209)
pimre Creative Commons License 2013.01.27 0 0 20209

Ez nehezen képzelhető el, amikor egy működő xls (2003) fállból copyzom a programszöveget egy xlsm (2007) fájlba, és míg az előbbi rendesen lefut, az utóbbi meg nem.

Előzmény: tbando (20208)
tbando Creative Commons License 2013.01.27 0 0 20208

Persze te is elnézhettél valamit.  Van ilyen. Én épp most vagy 2 óra hosszat kerestem egy makrómban a hibát, aztán amikor meglett, kiderült, hogy valami egészen banális apróság volt. Amit kapásból illett volna észrevennem..

Előzmény: tbando (20207)
tbando Creative Commons License 2013.01.27 0 0 20207

Akármelyik is a hibás, az sehogy se érthető, hogy egyszer elfogadja worksheet(2)-t aktívnak, egyszer meg nem.

Előzmény: pimre (20206)
pimre Creative Commons License 2013.01.27 0 0 20206

Most utólag jut eszembe, hogy még abban sem vagyok biztos, hogy maga az Excel 2007 a hibás, vagy csak az a transzformáló program, amit az office tölt le, amikor a 2007-ben készült adattáblázatot akarom megnyitni. És az így transzformált fájlba másoltam be a 2003-as alatt írt programomat, és találtam meg a hibát. Lévén, hogy Excel 2007-esem nincs.

Előzmény: tbando (20205)
tbando Creative Commons License 2013.01.27 0 0 20205

Van itt még valami speciális.  A probléma ugyanis nem egyszerűen az, hogy az excel felülről nem kompatibilis, hanem, hogy az egyik müveletnél kompatibilis, a másiknál meg nem.  Legalábbis ez következik számomra abból, hogy azt írod: " Worksheets(2).Select  után a munkalapváltás látszólag rendben megtörtént. Az ActiveCell.SpecialCells(xlLastCell).Row  parancs is rendben megtalálta az utolsó sort. Viszont a Cells(sor, oszlop) parancs meg rosszul hivatkozott. " 

 

No, az ilyen trükkök hülyítik meg a usert.

 

Előzmény: pimre (20203)
Sánta Kutya (SK) Creative Commons License 2013.01.27 0 0 20204

Makróban ez simán előfordul.

Előzmény: pimre (20203)
pimre Creative Commons License 2013.01.27 0 0 20203

Köszönöm, ez múködik. Eredetileg szándékosan szerettem volna elkerülni, hogy a munkalapok nevével foglalkozzam az aktuális programban, rá akarom bízni a felhasználóra a munkalapok elnevezését.  De végülis nem gond kiolvasni azt.

 

Viszont ez felvet egy elméleti kérdést: Létezik, hogy az Excel újabb verziói nem teljesítik a felülről kompatibilitás alapvető követelményét? Erre nem számítottam, és ha így van, akkor ez méltán váltja ki a neheztelésemet. Mondhatnám üzleti szempontú disznóság. Vagy csak figyelmetlenség? Vagy rosszul értelmezek valamit, és más szempontok miatt volt szükséges a munkalapok használatának alapvető átdolgozása?

 

Előzmény: Törölt nick (20170)
Delila10 Creative Commons License 2013.01.27 0 0 20202

Szívesen.

Előzmény: Tyorotyere (20201)
Tyorotyere Creative Commons License 2013.01.27 0 0 20201

 

 

Köszi! Utánanézek majd, mert úgy érzem nagyon le vagyok maradva :D

Előzmény: Delila10 (20200)
Delila10 Creative Commons License 2013.01.27 0 0 20200

A SOR() függvény azt a számot adja vissza, amelyikben szerepelteted. Az A2 (B2, C2, stb.) cellában 2 lesz az értéke, ezért kell levonni belőle 1-et.

 

Az INDIREKT függvényt nézd meg a súgóban, biztosan jobban leírja, mintha én mesélném el a működését.

Előzmény: Tyorotyere (20198)
tbando Creative Commons License 2013.01.27 0 0 20199

Na elkészült! Te biztos hamarabb elkészültél volna vele. De végül nekem is sikerült összehozni :))).

 

Hyperstroke FIGYU!

 

Elinditod a bill_15-t, onnantól elég az 1-5 értékeket leütnod, erre beírja, és lép egyet jobbra.  A '6' billentyű hatására új sort kez, a '7'-re meg leáll az onkey kényszer. 

 

Sub bill_15()

ActiveCell = "BILL 1-5 INDUL"

Application.OnKey "{97}", "bill1"

Application.OnKey "{98}", "bill2"

Application.OnKey "{99}", "bill3"

Application.OnKey "{100}", "bill4"

Application.OnKey "{101}", "bill5"

Application.OnKey "{102}", "bill6"

Application.OnKey "{103}", "bill7"

End Sub

 

Sub bill1()

Application.SendKeys ("1" + "{right}")

End Sub

 

Sub bill2()

Application.SendKeys ("2" + "{right}")

End Sub

 

Sub bill3()

Application.SendKeys ("3" + "{right}")

End Sub

 

Sub bill4()

Application.SendKeys ("4" + "{right}")

End Sub

 

Sub bill5()

Application.SendKeys ("5" + "{right}")

End Sub

 

Sub bill6()

Application.SendKeys ("{down}" + "{end}" + "{left}")

End Sub

 

Sub bill7()

Application.OnKey "{97}"

Application.OnKey "{98}"

Application.OnKey "{99}"

Application.OnKey "{100}"

Application.OnKey "{101}"

Application.OnKey "{102}"

Application.OnKey "{103}"

ActiveCell = "VEGE"

End Sub

 

 

Előzmény: Retro Image (20185)
Tyorotyere Creative Commons License 2013.01.27 0 0 20198

OOO köszi! Nagyon jó! Működik! Most ha másik oszlopot szeretnék akkor csak a B3 at átírom és ugyanígy működni fog! Nem igazán értem maúgy, jobb lenne ha megérteném, de az a lényeg h működik! 

 

 

Köszönöm mindenkinek aki segíteni akart!!!

Előzmény: Delila10 (20196)
Sánta Kutya (SK) Creative Commons License 2013.01.27 0 0 20197

Így egyszerűbb. Nem tudtam, hogy argumentum nélkül is működik.

Előzmény: Delila10 (20196)
Delila10 Creative Commons License 2013.01.27 0 0 20196

Az A2 cellába: =INDIREKT("Munka" & SOR()-1 & "!B3")

Ezt másolhatod le, ameddig kell.

Előzmény: Tyorotyere (20194)

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