動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2210 ビルド15726.20202 Microsoft Store)
「マクロ HasFormula falseのとき」
という検索でアクセスがありました。
Excel VBAのRangeオブジェクトに用意されているHasFormulaプロパティを使って、
セルに式が入っていない場合を判定するには、どのようなコードを書けばいいのかを探していらしたのでしょうか。
[スポンサードリンク]
Range.HasFormulaプロパティを使う基本
Range.HasFormulaプロパティの基本から確認しましょう。
以下のExcelマクロを実行すると、アクティブセルに式が入力されているかどうかを判定して、メッセージが表示されます。
Sub HasFormulaの基本()
If ActiveCell.HasFormula Then
MsgBox "アクティブセルに式が入力されています!"
Else
MsgBox "アクティブセルに式は入力されていません。"
End If
End Sub
If ActiveCell.HasFormula Then
MsgBox "アクティブセルに式が入力されています!"
Else
MsgBox "アクティブセルに式は入力されていません。"
End If
End Sub
Range.HasFormulaプロパティを使っている
If ActiveCell.HasFormula Then
の部分は、慣れないうちは
If ActiveCell.HasFormula = True Then
とするほうが理解しやすいかもしれません。
少しずつ「= True」なしのコードに慣れましょう。
式ではない場合をTrueと判定するサンプル
「マクロ HasFormula falseのとき」
と検索なさった方が調べていたのは、以下のような書き方のような気がしています。
Sub HasFormulaの結果をNot演算子で反転()
If Not ActiveCell.HasFormula Then
MsgBox "アクティブセルに式は入力されていません。"
Else
MsgBox "アクティブセルに式が入力されています!"
End If
End Sub
If Not ActiveCell.HasFormula Then
MsgBox "アクティブセルに式は入力されていません。"
Else
MsgBox "アクティブセルに式が入力されています!"
End If
End Sub
ポイントは、
If Not ActiveCell.HasFormula Then
のNot演算子です。
ActiveCell.HasFormulaの戻り値をNot演算子で反転しています。
Not演算子を使わずに式ではない場合を判定
Not演算子を使わず、以下のように論理値Falseとの比較演算を行っても、同様に判定できます。
Sub HasFormulaの結果をFalseで判定()
If ActiveCell.HasFormula = False Then
MsgBox "アクティブセルに式は入力されていません。"
Else
MsgBox "アクティブセルに式が入力されています!"
End If
End Sub
If ActiveCell.HasFormula = False Then
MsgBox "アクティブセルに式は入力されていません。"
Else
MsgBox "アクティブセルに式が入力されています!"
End If
End Sub
[スポンサードリンク]
Home » Excel VBA Rangeオブジェクト » Excel VBAのRange.HasFormulaで式ではない場合を判定