Oktatásokon, programozáskor (no meg csak úgy kedvtelésből :-)) számtalanszor használom az értékként történő beillesztést, melynek különféle módjai vannak:
-
a klasszikus:
Kijelölés -> Másolás (pl. CTRL+C) -> Jobb klikk -> Érték ikon -> ESC billentyű:
2. a kevésbé ismert, jobb klikkes:
Kijelölés -> Kurzort a kijelölés széléhez viszem (célkeresztre változik) -> jobb egérgombbal a kijelölt tartományt elmozdítom, majd önmagára visszateszem -> a megjelenő menüből kiválasztom a “Csak érték másolása ide” opciót:
3. az eszköztár-rajongói változat:
Az “Értékek beillesztése” parancs hozzáadása a gyorselérési eszköztárhoz (gyorselérési eszköztár testreszabását lásd itt).
Parancs hozzáadása az eszköztárhoz:
Ezután:
Kijelölés -> Másolás (pl. CTRL+C) -> gomb megnyomása az eszköztáron (vagy ALT + 1 ha az első pozícóban van) -> ESC billentyű:
És akkor ott van még a menüből történő másolás – értékbeillesztés is.
Ezen módszerek remekül működnek mindaddig, amíg egy összefüggő tartománynál akarjuk az értékeket beilleszteni. Mi van a nem összefüggő tartományokkal? A fenti mintaadatoknál a B2:D4 valamint a B7:D9-es tartomány celláit szeretném értékként beilleszteni egy füst alatt. Itt a fenti módszerek csődöt mondanak, próbáljuk meg a fentiek közül mondjuk a 3-as pontot:
Többszörös kijelölés -> Másolás (pl. CTRL+C) -> gomb megnyomása az eszköztáron (vagy ALT + 1 ha az első pozícóban van):
A hibaüzenet szerint “Ez a művelet többszörös kijelölésen nem végezhető el”. Ugyanerre a hibára futunk, ha érték helyett pl. formátumot akarunk beilleszteni. Erre a problematikára nyújt villámgyors megoldást az alábbi VBA kód, mely összefüggő és nem összefüggő tartományoknál is működik:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Sub BeillesztesErtekkent() Dim Rng As Range 'készítette: Tulner Roland(xlmotyo.hu) 'értékként illeszti be a kijelölt tartomány/tartományok celláit egy mozdulattal 'elegendő kijelölni a tartományt/tartományokat a makró futtatása előtt (nincs szükség másolásra pl. CTRL + C-vel) 'a kód akkor is mûködik, ha nem összefüggő tartományokat jelölünk ki. Excel-ben ilyen tartományokon '(többszörös kijelölésen) NEM mûködik az egy mozdulattal történő értékbeillesztés 'ilyen nem összefüggő tartományoknál: a volatilis képletek (pl. a VÉLETLEN.KÖZÖTT) NEM kalkulálódnak újra 'a beillesztés közben, vagyis értékként ugyanazt kapjuk, amit a képletek eredményeként láttunk If TypeName(Selection) <> "Range" Then 'ha nem munkalapon, hanem diagramlapon vagyunk MsgBox "Jelöld ki a cellát/tartományt egy MUNKALAPON, majd futtasd a makrót újra!", vbExclamation, "" GoTo Vege End If Application.Calculation = xlCalculationManual 'a volatilis képletek miatt If Selection.Areas.Count = 1 Then Selection = Selection.Value Else For Each Rng In Selection.Areas Rng = Rng.Value Next Rng End If Vege: Application.Calculation = xlCalculationAutomatic End Sub |
A fenti kódot beteheted egy adott munkafüzet új moduljába de tanácsosabb az Egyéni Makró Munkafüzet (Personal.xlsb) új moduljához hozzáadni – ennek mikéntjét itt láthatod.
A makró előnyei:
- akkor is működik az értékbeillesztés, ha nem összefüggő tartományokat jelölünk ki
- elegendő kijelölni a tartományt/tartományokat a makró futtatása előtt (nincs szükség másolásra pl. CTRL + C-vel)
- a beillesztés után nem kell ESC-t nyomni a másolási mód megszüntetéséhez
- ha diagramlapon vagyunk akkor a kód hibaüzenet után kilép, csak munkalapon működik (hiszen itt van értelme)
További szép napot, erőt – egészséget mindenkinek.