Telefonszámunk: 1-472-0679

Érték beillesztése az összes képletre hipergyorsan VBA segítségével

2012-12-18 - horvimi - Kategória: Macro-VBA, Tartományok kezelése
Hivatkozott Excel verzio:

Ha csak egy darab összefüggő tartományra szeretnénk a képleteket értékükkel helyettesíteni, akkor azt viszonylag gyorsan meg tudjuk csinálni az EXCEL által adott speciális beillesztési lehetőséggel.

De mi van akkor, ha egy munkalapon az összes képletet ki szeretnénk cserélni értékre? Hagyományos módszerrel egyenként kell megcsinálni. De ha az alábbi kis kódot elraktározzuk magunknak pl. a PERSONAL makrófüzetbe, akkor bármelyik dokumentumunknál nagyon gyorsan megtehetjük a cserét.

Háttér

Az Excel a speciális kijelölések segítségével megadja a módját, hogy az összes, képletet tartalmazó cellát egy lépésben kijelöljük. Ezt az Excel felületen így kell:

  1. F5
  2. Special… (Irányított…) gomb
  3. Képletek

Ugyanezt VBA kóddal

Selection.SpecialCells(xlCellTypeFormulas, 23).Select

Képletek cseréje nem összefüggő tartományoknál

Nagyon valószínű, hogy nem csak egy tartományban lesznek képletek. Így több, nem összefüggő tartományt jelöl ki az Excel. Ezekre viszont NEM LEHET értéket beilleszteni az Excel felületről.

Megoldás

A nem összefüggő tartományokat egy VBA ciklusban bejárva, egyesével cseréljük ki bennük a képleteket értékre.

A nem összefüggő tartományok bejárásának leírását lásd itt.

[vb]

‘Képletek értékké alakítása nem összefüggő tartományokban is

Sub Formula2Value()
Dim r As Range

‘Képleteket tartalmazó cellák(tartományok) kijelölése
Selection.SpecialCells(xlCellTypeFormulas, 23).Select

‘A keletkezett tartományok (areas) bejárása
For Each r In Selection.Areas
r.Select
Selection.Formula = Selection.Value
Next

End Sub

[/vb]

Vélemény, hozzászólás?