Keresés

Részletes keresés

Törölt nick Creative Commons License 2013.12.04 0 0 23302

Szívesen.

Jobban belegondolva, ha munkafüzetek megnyitása van a ciklusmagban, akkor a DoEvents által okozott lassulás valószínűleg nem is vehető észre.

Én úgy teszteltem, hogy ciklusban felvettem a ListBoxba 2000 UUID-t, és ott a DoEvents kb. kétszeresére növelte a futási időt. De még így is csak 12 másodperc volt, szóval... :-)

 

Előzmény: Pit-bit (23297)
Törölt nick Creative Commons License 2013.12.04 0 0 23301

Azt lehetne, hogy egy mini adatbázist tárolni egy (rejtett) munkalapon, ahol az egyes cellákhoz tartozó képek elérési útvonala van, vagy inkább rögtön a méretadatok. Abból egyszerűen helyre lehetne állítani a méreteket. Persze egyszer meg kell csinálni a listát, ezt nem lehet el/megkerülni, de aztán már csak karban kell tartani, ami talán nem olyan vészes.

Előzmény: JT2 (23288)
NPW Creative Commons License 2013.12.04 0 0 23300

Köszi, ez hasznos!

 

Már csak azt nem értem, hogy az otthoni 2007-es Excel miért tudta eredetileg a negyvenezres dátumokkal is kiszámolni, míg a munkahelyi 2010-es nem; megnéztem, a beállításoknál ugyanúgy (a default) mindkettő.

Előzmény: Fferi50 (23262)
NPW Creative Commons License 2013.12.04 0 0 23299

természetesen nem a 123.-ra emeltem, csak a hozzászólásban nekem is eltűnt a backslash... :-)

Előzmény: Fferi50 (23244)
Törölt nick Creative Commons License 2013.12.04 0 0 23298

Szerintem félreérted a feladatot (vagy én értem félre). Arról van szó, hogy adott egy munkalap, amin már eleve vannak képes megjegyzéssel ellátott cellák.

Tehát nem most teszem be a képet, hanem eleve adva van. Ha most tenném be, akkor gyerekjáték lenne a méreteit meghatározni, és a comment szövegdobozát aszerint formázni. De ha már benne van a kép, akkor hogyan szeded ki belőle? Én erre nem találtam megoldást, kezelőfelületen sem, és programban sem. Erre a kérdésre a te ötleted sem válasz.

Előzmény: Fferi50 (23285)
Pit-bit Creative Commons License 2013.12.04 0 0 23297

Jimmy the Hand , köszönöm a segítséget,

a DoEvents működik, a futásidő megnövekedése pedig nem számít, a lényeg az elvi működés.

Előzmény: Törölt nick (23231)
Fferi50 Creative Commons License 2013.12.04 0 0 23296

Szia!

 

Akkor viszont a worksheet calculate eseményét kell kihasználni:

 

Private Sub Worksheet_Calculate()
If Range("Z1").Value <> Range("H2").Value Then
   Application.EnableEvents = False
   Range("F3").Value = Range("H3").Value
   Range("Z1").Value = Range("H2").Value
   Application.EnableEvents = True
End If
End Sub

 

Ez akkor fut le, amikor a munkalap adatai újraszámolódnak.

Viszont nekünk csak akkor kell a folyamat, ha a H2 cella értéke megváltozik. Ezért ezt el kell tárolnunk valahova, erre szolgál a Z1 cella a példában (de bárhova is teheted).

Ha a Z1 értéke nem egyezik a H2 értékével, akkor lefut a kívánt akció és a Z1 értékét is átállítja.

Legközelebb, ha kiváltódik az esemény - újraszámolja a munkalapot -  de a H2 cella értéke nem változik, nem fut le az akció.

 

Remélem, így már megfelel a céljaidnak.

 

Üdv.

Előzmény: enyan (23295)
enyan Creative Commons License 2013.12.04 0 0 23295

Ez nagyon állat, működik is, viszont csak akkor, ha én írom át a cella értékét. Egyébként ez a cella egy szummázás végösszegét tartalmazza, aminek az értéke változik a többi munkalap adataitól függően. Valahogy el kéne érni, hogy fusson a makró akkor is, ha egy másik munkalap megváltoztatásának hatására változik meg a folyamat beindítására használt cella értéke. Remélem ez sem bonyolítja túl a helyzetet, mert már majdnem tökéletes!!!

 

Köszi mégegyszer!

Előzmény: Fferi50 (23294)
Fferi50 Creative Commons License 2013.12.04 0 0 23294

Szia!

 

Számodra a megoldás egy eseménykezelő eljárás:

 

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Nothing Is Application.Intersect(Target, Range("H2")) Then
   Application.EnableEvents = False
   Range("F3").Value = Range("H3").Value
   Application.EnableEvents = True
End If
End Sub

 

Ezt másold be az adott munkalap kódlapjára.

Ha a bal oldalon kiválasztod a worsheet-et, akkor jobb oldalon megjelennek az események. Itt válaszd ki a Change eseményt.

Ekkor a kódlapon megjelenik a fentiekben nem vastagított 2 sor.

Közéjük másold be a vastagított sorokat.

 

Üdv.

 

Előzmény: enyan (23293)
enyan Creative Commons License 2013.12.04 0 0 23293

Sziasztok!

 

Átrágtam magam az ajánlott könyvön, valamit talán még tanultam is belőle, de hogy új makrót írjak, arra nincs sok esélyem.

Viszont most talán pontosabban meg tudom fogalmazni, hogy mit csináljon a makró. Ha valaki össze tudja dobni, az nagy segítség lenne. Tehát az adott munkafüzet h2-es cella értékének a változására kellene lefutnia és egész egyszerűen a h3-as cella értékét kellene átmásolnia az f3-as cellába. Persze több másolás kell majd, de a többivel talán majd én is tudom bővíteni. Nagy problémám, hogy nem tudom például a kijelöléseket megszűntetni. Valahogy úgy kéne lefuttatni a makrót, hogy ne generáljon smmi más változást beleértve a kijelölések megváltoztatását, egyszerűen csak kerüljön bele a célcellába a másolt cella értéke. Lehet ilyet csinálni?

 

Köszönöm előre is!

Előzmény: tbando (22424)
Delila10 Creative Commons License 2013.12.04 0 0 23292

Most meg rossz helyre tettem, de többször már nem javítok, úgyis tudjátok.

Előzmény: Delila10 (23291)
Delila10 Creative Commons License 2013.12.04 0 0 23291

Nálam is megette. :(

 

ActiveSheet.Pictures.Insert("E\:JpgLóÁtló.jpg").Select

Selection.ShapeRange.Fill.UserPicture "E\:JpgLóÁtló.jpg"

Előzmény: Delila10 (23290)
Delila10 Creative Commons License 2013.12.04 0 0 23290

Rögzítettem egy makrót, majd itt-ott töröltem belőle.

A lényeg, hogy behívom a képet, elteszem a 2 méretét 1-1 változóba, törlöm a képet.

Beszúrok egy megjegyzést, ehhez az előbb tárolt 2 méretet rendelem, majd be(le)szúrom ismét a képet. Itt nem foglakoztam a képernyőfrissítés tiltásával és engedélyezésével. Kicsit kacifántos módszer, de működik.

 

Teheted ciklusba, ha az egyes képek útvonalát és nevét előbb tároltad az egyes sorokban.

 

Sub Rögzítés1()
    Dim magassag As Double, szelesseg As Double
    ActiveSheet.Pictures.Insert("E:JpgLóÁtló.jpg").Select
    Selection.ShapeRange.LockAspectRatio = msoFalse
    magassag = Selection.ShapeRange.Height
    szelesseg = Selection.ShapeRange.Width
    Selection.Delete
    Range("A1").AddComment
    Range("A1").Comment.Shape.Select True
    Selection.ShapeRange.Height = magassag
    Selection.ShapeRange.Width = szelesseg
    Selection.ShapeRange.Fill.UserPicture "E:JpgLóÁtló.jpg"
    Range("A1").Comment.Text Text:=""
End Sub

Előzmény: JT2 (23288)
Delila10 Creative Commons License 2013.12.04 0 0 23289

Nagyobb berendezéseket gyártottunk, amiknek az állapotáról havonta kellett tájékoztatni a vezetőséget. A munkaszámokat tartalmazó cellákhoz megjegyzésben csatoltam a berendezések aktuális állapotáról a felvételeket. Szerintem nagyon hasznos funkció.

 

Arra is jó, hogy pl. az ügyfelek fotóját tegyük a megjegyzésbe. A nevek kiesnek a fejemből, de egy fotó sokat segít az azonosításban.

Előzmény: Sánta Kutya (SK) (23287)
JT2 Creative Commons License 2013.12.04 0 0 23288

"Jelenleg azt gondolom, hogy rövidebb időbe fog telni neked megcsinálni az átméretezéseket manuálisan, mint nekem az, hogy erre programot eszkábáljak össze, úgyhogy átengedem a megoldás lehetőségét."

Sajnálom az elvesztegetett idődet, nem kitolásból tettem fel a kérdést hanem, mert több szem többet lát, hátha valakinek semmiség az ami nekem lehetetlen.

 

Manuálisan átméretezni? Már megfordult a fejemben de visszatart az, hogy valaminek a hatására (más szempont szerinti rendezés, törölt sor, stb...mittudomén) a képek méretei megváltozhatnak (ez már megtörtént, ezért vagyok itt) és akkor oda a belefektetett idő. Ilyenkor jönne jól egy makró, mely néhány másodperc alatt elintézné a problémát. Persze ha lehetetlen, akkor mást kell kitalálnom.

Előzmény: Törölt nick (23280)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23287

Inkább tenném mellé egy külön cellába, hogy állandóan láthassam. :-)

Az én felfogásom szerint a megjegyzés csak olyasmire való, aminek nincs "üzemszerű" helye a táblázatban, nem funkcionális és csak a cellák kis részénél használjuk. Elég visszafogottan érdemes használni. De persze ez vitatható egyéni állláspont.

Előzmény: Fferi50 (23286)
Fferi50 Creative Commons License 2013.12.04 0 0 23286

Szia!

 

Én sem csináltam még ilyet, de pl. el tudom képzelni, hogy egy címlistában a nevet tartalmazó cella megjegyzésébe beteszed az illető fényképét.

Így amikor a cellán jársz, láthatod az illető mosolyát.:)

 

Üdv.

Előzmény: Sánta Kutya (SK) (23284)
Fferi50 Creative Commons License 2013.12.04 0 0 23285

Szia!

 

Amit írtam ötletet az működik, egy dologra kell vigyázni:

 

A megjegyzés szerkesztésénél a méret fülön levő dolgokat nem szabad piszkálni. (Érdekes módon ott engedi az eredeti méret és a rögzített arány bejelölését is, ezeknek jelöletlennek kell lenni).

 

Egyébként, ha programból szúrod be a képeket, akkor úgyis megtudod a méretet is.

 

 

Üdv.

 

Előzmény: Törölt nick (23282)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23284

Sőt, még rafináltabban: elmented egyenként a képeket megadott képtípusban, megnyitva a file-okat kinyered a méretet a fejlécből, majd törlöd.

Megér ennyit, hogy a megjegyzésben legyen a kép? Nekem az életben nem támadt még ilyen ötletem.

Előzmény: Fferi50 (23283)
Fferi50 Creative Commons License 2013.12.04 0 0 23283

Szia!

 

Egy ötlet:

 

Beszúrod szép sorban a képeket a munkalapra. Arról le tudod olvasni a méreteket és máris át tudod tenni a megjegyzésre. Utána törlöd a beszúrt képet.

Nyilván for each ciklussal végig kell ballagni a megjegyzéseken. A hozzájuk tartozó képeket pedig csak tudja, honnan szúrta be.

 

Üdv.

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

"Már csak azt kell tudnod, mennyi volt az eredeti méret."

 

Hát ez az. És azt honnan?

Előzmény: Fferi50 (23281)
Fferi50 Creative Commons License 2013.12.04 0 0 23281

Köszi!

 

Cserébe a formázás:

 

With Range("A1").Comment
     .Visible = True
     .Shape.Height = magasság
     .Shape.Width = szélesség
     .Visible = False
End With

 

Már csak azt kell tudnod, mennyi volt az eredeti méret.

Sajnos a scalewidth és scaleheight tulajdonságok itt nem működnek!

 

Üdv.

Előzmény: JT2 (23277)
Törölt nick Creative Commons License 2013.12.04 0 0 23280

Már elcs.sztem vele 4 órát eredmény nélkül. Most nincs több kidobni való időm.

Annyi bizonyosnak tűnik, hogy az objektum nem publikál semmiféle fogódzót, amivel a megjegyzés hátterének beállított kép tulajdonságait le lehetne kérdezni. Talán valami Windows függvénnyel meg lehetne ragadni, de erre sem találtam semmi értelmes tippet.

 

Jelenleg azt gondolom, hogy rövidebb időbe fog telni neked megcsinálni az átméretezéseket manuálisan, mint nekem az, hogy erre programot eszkábáljak össze, úgyhogy átengedem a megoldás lehetőségét.

Előzmény: JT2 (23278)
maciti Creative Commons License 2013.12.04 0 0 23279

Köszi a gyors reagálást! Ezzel a trükkel működik is!!!

Előzmény: Sánta Kutya (SK) (23269)
JT2 Creative Commons License 2013.12.04 0 0 23278

"Szoktam mondani, hogy Excellel bármit meg lehet csinálni, de most kedvem támadt visszavonni."

 

Jó lenne ha ha a fenti mondatodra rácáfolnál! Hajrá!:)

Előzmény: Törölt nick (23271)
JT2 Creative Commons License 2013.12.04 0 0 23277

kattints a cellára jobb billentyűvel

legördülő menü

megjegyzés beszúrása

kattints újra a cellára jobb billentyűvel

legördülő menü

megjegyzés szerkesztése

dupla katt a megjegyzés peremére

színek és vonalak

szín

kitöltési effektusok

kép

képválasztás

beszúrások

ok

ok

Előzmény: Fferi50 (23273)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23276

Nem tudja előre, mikor melyik lesz az összefűzendő oszlop.

Szerintem sokkal egyszerűbb, amit én írtam, de nem akarok vetélkedni.

Előzmény: Fferi50 (23274)
Törölt nick Creative Commons License 2013.12.04 0 0 23275

Megjegyzés formázása -> Színek és vonalak -> Szín: Kitöltési effektusok -> Kép -> Képválasztás

Előzmény: Fferi50 (23273)
Fferi50 Creative Commons License 2013.12.04 0 0 23274

Szia!

 

A folytatásban fűzd össze az összetartozó oszlopokat és távolítsd el ami ezek után felesleges:

 

Az end sub elé:

Range("A1").entirecolumn.insert

Range("A1:A123").formula="=B1 & "" "" & C1"

Range('A1:A123").value=Range("A1:A123").value

Columns("B:C").delete

 

ugyanezt megcsinálod a C oszlopra:

Range("C1").entirecolumn.insert

Range("C1:C123").formula="=D1 & "" "" & E1"

Range('C1:C123").value=Range("C1:C123").value

Columns("D:E").delete

 

ha van még hasonló oszlop, akkor ugyanígy.

 

Üdv.

Előzmény: maciti (23267)
Fferi50 Creative Commons License 2013.12.04 0 0 23273

Szia!

 

Egyáltalán, hogy kerül a cella megjegyzésébe kép? Mert én eddig csak szöveget tudtam beletenni.

 

Üdv.

Előzmény: Törölt nick (23271)

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