• ベストアンサー

エクセルVBAでセルが数値か数式かの判断方法

エクセル2000です。 Sub Suuchi() If IsNumeric(Range("A1")) = True Then MsgBox "数値で~す♪" Else MsgBox "数値じゃないよ!" End If End Sub とやってみたんですが、数式も数値となってしまいます。 数値、数式、文字の判断はどうやればいいんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kmb01
  • ベストアンサー率45% (63/138)
回答No.4

if Range("A1").HasFormula then '数式 elseif IsNumeric(Range("A1").Value) then '数値 else '文字列 end if でいいと思います。

error123
質問者

お礼

すばらしい! 完璧です。 HasFormulaって初めて見ました。 たすかりました。

その他の回答 (3)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

Range("A1")はあくまでも結果で判定されますから数式の結果が数値なら "数値で~す♪"が表示されます。 文字でなく色をつける方法なら紹介されたサイトがあります。 エクセル技道場【数式が入力されているセルに色をつける】 http://www2.odn.ne.jp/excel/waza/macro.html#SEC23

error123
質問者

お礼

ありがとうございました。 勉強になりました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

他にもっと良い方法があるような気がしますが、とりあえず動くもの アクティブセルが数式かどうかを判断します Dim x As Range Set x = Application.Intersect(ActiveCell, Application.Cells.SpecialCells(xlCellTypeFormulas)) If x Is Nothing Then MsgBox "数式じゃない" Else MsgBox "数式" End If

error123
質問者

お礼

なるほど。SpecialCellsが使えるんですね。勉強になりました。

回答No.1

数式の条件も入れたほうがいいですよ。 +-*/() 他にもあるかなぁ。

error123
質問者

お礼

ありがとうございます。