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
以上。
コメント