|
▼翡翠 さん:
こんにちは。
>データ保存用ブックを作成する際に、複数シート内の特定の数式を値に置換したいと思っています。
>
> With ActiveSheet.UsedRange
> Set C = .Find("VLOOKUP", , xlFormulas, xlPart)
>
> If C Is Nothing Then Exit Sub
> Do
> C.Value = C.Value
> Set C = .FindNext(C)
> Loop Until C Is Nothing
>
> Set D = .Find("ISERROR", , xlFormulas, xlPart)
>
> If D Is Nothing Then Exit Sub
> Do
> D.Value = D.Value
> Set D = .FindNext(D)
> Loop Until D Is Nothing
>
>現在は上記のように外したい数式をひとつひとつ指定、各シート毎にマクロ実行しています。(シート数が非常に多いのでかなり手間がかかっています・・・)
>
>すべてのシートについて「SUM関数を除いたすべての数式」というような記述方法もしくは上記記述を簡素にする方法があれば、どなたかご指南ください。よろしくお願いします。
一例ですが、SpecialCellsメソッドで数式セルだけ先に取得する方法です。
例は、Sum関数以外は、値に変換。
'===========================================
Sub main()
Dim rng As Range
Dim crng As Range
Set rng = get_数式セル群(ActiveSheet.UsedRange)
If Not rng Is Nothing Then
For Each crng In rng
If Not crng.Formula Like "=SUM(*)" Then
crng.Value = crng.Value
End If
Next crng
End If
End Sub
'==========================================================
Function get_数式セル群(rng As Range) As Range
On Error Resume Next
Set get_数式セル群 = Nothing
Set get_数式セル群 = rng.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
End Function
|
|