[Megoldva] Állandó értékre hivatkozó makró
- Harsányi Zoltán
- Önkéntesek
- Hozzászólások: 42
- Csatlakozott: 2008. február 29., péntek 21:35
- Tartózkodási hely: Sopron
[Megoldva] Állandó értékre hivatkozó makró
Sziasztok!
A Vickers keménység számító táblázatomat bővítenem kellett, mert objektív cserére került sor a berendezésen. A két objektív közti különbséget kompenzálni kell, ezért a lenyomat értékeket szorozni kell egy állandóval.
Nos a "makrórekorderrel" rögzítettem egy makrót. Készítettem egy nyomógombot a használatához. A fájl megnyitása és adat feltöltés után általában nem végzi el a makrófuttatást. Viszont, ha előre kijelölöm és vágólapra másolom az állandó értékét; akkor rendben működik.
Örülnék, ha segítenétek a makró javításában; akár a makróban fixen beírt állandó is jó lenne (sőt ezzel kiküszöbölhető lenne a hivatkozott cella módosításából adódó hiba lehetőség)!
Üdvözlettel: Harsányi Zoltán
A Vickers keménység számító táblázatomat bővítenem kellett, mert objektív cserére került sor a berendezésen. A két objektív közti különbséget kompenzálni kell, ezért a lenyomat értékeket szorozni kell egy állandóval.
Nos a "makrórekorderrel" rögzítettem egy makrót. Készítettem egy nyomógombot a használatához. A fájl megnyitása és adat feltöltés után általában nem végzi el a makrófuttatást. Viszont, ha előre kijelölöm és vágólapra másolom az állandó értékét; akkor rendben működik.
Örülnék, ha segítenétek a makró javításában; akár a makróban fixen beírt állandó is jó lenne (sőt ezzel kiküszöbölhető lenne a hivatkozott cella módosításából adódó hiba lehetőség)!
Üdvözlettel: Harsányi Zoltán
- Csatolmányok
-
- HV keménységmérés.ods
- (126.7 KiB) Letöltve 234 alkalommal.
A hozzászólást 1 alkalommal szerkesztették, utoljára Harsányi Zoltán 2018. augusztus 15., szerda 17:16-kor.
LinuxMint 21.2 (home) • Ms Windows 7 (work) • LibO 7.6.x
- Zizi64
- Globális moderátorok
- Hozzászólások: 4034
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: Állandó értékre hivatkozó makró
Nem tartom jó ötletnek a kompenzálásnak az ilyen módon történő elvégzését. Hiszen így akár többször is megnyomhatod a gombot...
Ettől az is jobb, ha egy névvel rendelkező cellába helyezed a szorzót és minden szükséges helyre beírod szorzótényezőként. A név csak a valódi "abszolút hivatkozás" miatt előnyös: bárhová, bármelyik sheet-re is helyezed át a névvel rendelkező cellát, a képletek érvényesek maradnak. Ha később a szorzó ismét változik, azt abban az egyetlen cellában kell csak módosítanod. Ha több munkafüzetben is szükséged van ugyanarra a szorzóra, akkor pedig írj egy roppant egyszerű függvényt a szorzó eltárolására:
A makró függvényt mentsd egy Modulba a program Standard könyvtárába, akkor az minden táblázatból elérhetővé válik (de csak a te gépeden). Ha a fájlokba is beleteszed, akkor hordozhatóvá is válik. Nem baj, ha egyszerre két helyről is elérhető a függvény: a program Standard könyvtár egy Moduljából is, és az aktuális dokumentumból is. (Egy másik dokumentumból nem elérhetők a makrók, legalábbis nem elérhetők ilyen egyszerűen.)
használata:
= A1*B1*MyComp()
a PI() függvényhez hasonló módon.
A te makrós megoldásod esetén biztosítani kell, hogy csakis egyszer történhessen meg a kompenzálás, és a visszavonási (reset) lehetőséget is biztosítani kell - főleg, ha a későbbiekben a szorzó változhat.
Ettől az is jobb, ha egy névvel rendelkező cellába helyezed a szorzót és minden szükséges helyre beírod szorzótényezőként. A név csak a valódi "abszolút hivatkozás" miatt előnyös: bárhová, bármelyik sheet-re is helyezed át a névvel rendelkező cellát, a képletek érvényesek maradnak. Ha később a szorzó ismét változik, azt abban az egyetlen cellában kell csak módosítanod. Ha több munkafüzetben is szükséged van ugyanarra a szorzóra, akkor pedig írj egy roppant egyszerű függvényt a szorzó eltárolására:
Kód: Egész kijelölése
Function MyComp()
MyComp = 1,23456789
end function
használata:
= A1*B1*MyComp()
a PI() függvényhez hasonló módon.
A te makrós megoldásod esetén biztosítani kell, hogy csakis egyszer történhessen meg a kompenzálás, és a visszavonási (reset) lehetőséget is biztosítani kell - főleg, ha a későbbiekben a szorzó változhat.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
- Harsányi Zoltán
- Önkéntesek
- Hozzászólások: 42
- Csatlakozott: 2008. február 29., péntek 21:35
- Tartózkodási hely: Sopron
Re: Állandó értékre hivatkozó makró
Szia Zizi!
Köszönöm szépen a válaszokat.
Igen, sajnos a gomb lenyomásával többszöri kompenzálás keletkezik, ezt tapasztaltam én is. Nem tudom megoldható, hogy a makrót csak egyszer lehessen lefuttatni (gombot lenyomni); a fájl megnyitása után? A következő futtatás csak a fájl újra nyitása után lehetne? Esetleg a makró végére beszúrni sorokat, hogy a kompenzálás alapjául szolgáló E7 cellába 1,0 értéket írna. Így másodjára már az 1,0 értékkel szorozna, ami megfelelne számomra.
Az E7 cella tartalmának figyelését a HA() függvénnyel megoldanám, azaz visszajelzést kapna a felhasználó; indítható-e a kompenzálás vagy nem. Az E7 cellára pedig érvényesítést raknák, hogy csak az 1,0 vagy az 1,2 érték bevitelét engedje.
Sajnos a fájt egy hálózati mappából 3 személynek kell elérnie, ezért is a fájlba írt makróra van szükség.
Üdvözlettel: Harsányi Zoltán
Köszönöm szépen a válaszokat.
Igen, sajnos a gomb lenyomásával többszöri kompenzálás keletkezik, ezt tapasztaltam én is. Nem tudom megoldható, hogy a makrót csak egyszer lehessen lefuttatni (gombot lenyomni); a fájl megnyitása után? A következő futtatás csak a fájl újra nyitása után lehetne? Esetleg a makró végére beszúrni sorokat, hogy a kompenzálás alapjául szolgáló E7 cellába 1,0 értéket írna. Így másodjára már az 1,0 értékkel szorozna, ami megfelelne számomra.
Az E7 cella tartalmának figyelését a HA() függvénnyel megoldanám, azaz visszajelzést kapna a felhasználó; indítható-e a kompenzálás vagy nem. Az E7 cellára pedig érvényesítést raknák, hogy csak az 1,0 vagy az 1,2 érték bevitelét engedje.
Sajnos a fájt egy hálózati mappából 3 személynek kell elérnie, ezért is a fájlba írt makróra van szükség.
Üdvözlettel: Harsányi Zoltán
LinuxMint 21.2 (home) • Ms Windows 7 (work) • LibO 7.6.x
- Zizi64
- Globális moderátorok
- Hozzászólások: 4034
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: Állandó értékre hivatkozó makró
Ez mind-mind a "túlbonyolítás" kategóriába tartozik nálam. Egyetlen névvel rendelkező cella, vagy egy a szorzó konstanst visszaadó függvény, és a korrigáló szorzást is tartalmazó képletek sokkal egyértelműbb, és egyszerűbben használható megoldást adnak. Ha kézzel bevitt adatokat kell korrigálnod, akkor is alkalmazhatók segédcellák, ahol a szorzás megtörténik, és azoknak az eredményeit viszed tovább. Nem árt az, ha egy szükséges korrekció elvégzésének ténye LÁTSZIK a dokumentumban.Nem tudom megoldható, hogy a makrót csak egyszer lehessen lefuttatni (gombot lenyomni); a fájl megnyitása után? A következő futtatás csak a fájl újra nyitása után lehetne? Esetleg a makró végére beszúrni sorokat, hogy a kompenzálás alapjául szolgáló E7 cellába 1,0 értéket írna. Így másodjára már az 1,0 értékkel szorozna, ami megfelelne számomra.
Az E7 cella tartalmának figyelését a HA() függvénnyel megoldanám, azaz visszajelzést kapna a felhasználó; indítható-e a kompenzálás vagy nem. Az E7 cellára pedig érvényesítést raknák, hogy csak az 1,0 vagy az 1,2 érték bevitelét engedje.
Ha mégsem kell a korrekció, akkor egyszerűen 1-et írsz a névvel rendelkező cellába, vagy a makrókódba.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
- Zizi64
- Globális moderátorok
- Hozzászólások: 4034
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: Állandó értékre hivatkozó makró
További magyarázat:
Ha képlet nélkül makróval szorzol fel egy számot egy cellában (kiemelve a számot onnan, majd a makróval a szorzást elvégezve visszateszed az eredményt a cellába), akkor a cellában SEMMI nyoma nem lesz annak, hogy a szorzást elvégezted-e már, vagy még nem.
A makrónak kell számontartani (globális változókkal, vagy további segédcellák alkalmazásával), hogy a hálózaton többek által kezelt fájlban ne történhessen többszörös korrekció. Ez nagyon nehezen fog megbízhatóan működni.
Ha képlet nélkül makróval szorzol fel egy számot egy cellában (kiemelve a számot onnan, majd a makróval a szorzást elvégezve visszateszed az eredményt a cellába), akkor a cellában SEMMI nyoma nem lesz annak, hogy a szorzást elvégezted-e már, vagy még nem.
A makrónak kell számontartani (globális változókkal, vagy további segédcellák alkalmazásával), hogy a hálózaton többek által kezelt fájlban ne történhessen többszörös korrekció. Ez nagyon nehezen fog megbízhatóan működni.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
- Zizi64
- Globális moderátorok
- Hozzászólások: 4034
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: Állandó értékre hivatkozó makró
...és mi történik ha elmented a fájl és aztán megint megnyitod? kétszer fog megtörténni a korrekció, ha a gombra megint lehet kattintani... Vagy egy Template/Sablon fájlról beszélünk (a kiterjesztését illetően is), ami mindig egy új dokumentumként nyílik meg és (könnyen) nem menthető vissza az eredeti helyére?Nem tudom megoldható, hogy a makrót csak egyszer lehessen lefuttatni (gombot lenyomni); a fájl megnyitása után? A következő futtatás csak a fájl újra nyitása után lehetne?
Ha mindenképpen a komplex makrós megoldásban gondolkodsz:
Lehet természetesen LETILTANI egy gombot akár a megnyomásához rendelt makróval is. (És mellette a makró elvégezheti egyszer a szükséges számításokat. Utána már nem tudod megnyomni.)
Arra találsz mintapéldákat a Fórumokon, hogy az adott munkalap grafikus rétegén (Layer) elhelyezkedő gombokat hogyan találhatod meg makróval a NEVÜK, vagy a FELIRATUK alapján.
https://stackoverflow.com/questions/588 ... eet-macros
https://forum.openoffice.org/en/forum/v ... =9&t=30737
Vagy hivatkozhatsz a gombra a makró futását kiváltó esemény szülő-objektumaként is:
https://forum.openoffice.org/en/forum/v ... 39&t=38725
Azután már csak be kell állítanod a megfelelő tulajdonságait a megfelelő értékre (Enabled/Disabled).
De ez semmiképpen nem megy makrórögzítővel rögzített makrókkal. ÍRNOD kell a makrókat az API függvények használatával. Az effektív makró programozáshoz mindenképpen bele kell mélyedned az AOO/LO "API" felületének a megismerésébe és használatába. (API = Application Programming Interface)
Andrew Pitonyak ingyenes makróprogramozási könyvei ehhez rengeteg segítséget adnak:
http://www.pitonyak.org/oo.php
Arról, hogy egy megtalált objektum milyen tulajdonságokkal, metódusokkal, szolgáltatásokkal rendelkezik, objektum-vizsgáló eszközök adhatnak információt. Ilyenek pl. az MRI és az XrayTool:
https://forum.openoffice.org/en/forum/v ... 74&t=49294
https://forum.openoffice.org/en/forum/v ... 20&t=54217
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
- Harsányi Zoltán
- Önkéntesek
- Hozzászólások: 42
- Csatlakozott: 2008. február 29., péntek 21:35
- Tartózkodási hely: Sopron
Re: [Megoldva] Állandó értékre hivatkozó makró
Szia Zizi!
A nyári leállás után folytattam a táblázat átalakítását. Makró maradt, de a nyomógombot töröltem; ezzel a véletlen újra számítás elkerültem. Végül sikerült azt is elérnem, hogy újra számítás esetén 1-es értékkel történjen a szorzás.
A táblázat első lapja csak a számítás elvégzéséig kerül használatra, miután PDF készült róla a beviteli mezőket ürítjük.
Üdv. Zoli
A nyári leállás után folytattam a táblázat átalakítását. Makró maradt, de a nyomógombot töröltem; ezzel a véletlen újra számítás elkerültem. Végül sikerült azt is elérnem, hogy újra számítás esetén 1-es értékkel történjen a szorzás.
A táblázat első lapja csak a számítás elvégzéséig kerül használatra, miután PDF készült róla a beviteli mezőket ürítjük.
Üdv. Zoli
- Csatolmányok
-
- HV keménységmérés német2.ods
- (95.14 KiB) Letöltve 251 alkalommal.
LinuxMint 21.2 (home) • Ms Windows 7 (work) • LibO 7.6.x