VBAでセルに式が設定されているか判定する方法

VBA プログラミング
この記事は約2分で読めます。

※当ブログではアフィリエイト広告を利用しています。

Excelの関数式が設定されているようなシートに、VBAの処理を埋め込む場合、間違って式が設定されているセルを上書いてしまうと面倒です。

そんなときは、セルに式が設定されているかどうかを判定してやることで、回避できる。

セルに式が設定されているかどうかは、CellsやRangeの「HasFormula」プロパティで判定できる。

以下のサンプルでは、セルが設定されているかどうかでセル色を変えてみた。

Sub FormulaCheck()
    'ループカウンタ初期化
    i = 1

    'ループ
    Do While Cells(i, 1) <> ""

        If Cells(i, 1).HasFormula Then
            '式が設定されている場合、セル色を赤色へ変更

            Range(Cells(i, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False)).Interior.ColorIndex = 3
        Else
            '式が設定されていない場合、セル色を緑色へ変更

            Range(Cells(i, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False)).Interior.ColorIndex = 4
        End If

        'ループカウンタインクリメント
        i = i + 1
    Loop
End Sub

また、「Formula」プロパティを使用すれば、式の取得や設定を行うことができる。

以下のサンプルでは、セルの式を取得し、別セルに設定してみた。

Sub GetSetFormula()
    '変数
    Dim strFormula1 As String
    Dim strFormula2 As String

    '式の取得
    strFormula1 = Cells(10, 1).Formula
    strFormula2 = Range("B10").Formula

    '式の設定
    Cells(11, 1).Formula = strFormula1
    Range("B11").Formula = strFormula2
End Sub

以上。

参考サイト

数式かどうかを調べる:エクセルマクロ・Excel VBAの使い方-ユーザー定義関数

プログラミング
\よかったらシェアしてね!/
えふめん

大阪在住、30代。
業務系SE・社内SE。

PCトラブルの調査、自作デスクトップPCのこと、PC周辺機器のレビューなどの記事を書いています。

えふめんをフォローする
この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
俺の開発研究所

コメント

タイトルとURLをコピーしました