こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

エクセル2000です。

Sub Suuchi()
If IsNumeric(Range("A1")) = True Then
MsgBox "数値で~す♪"
Else
MsgBox "数値じゃないよ!"
End If
End Sub

とやってみたんですが、数式も数値となってしまいます。
数値、数式、文字の判断はどうやればいいんでしょうか?

投稿日時 - 2004-11-24 18:03:23

QNo.1098301

困ってます

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

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

投稿日時 - 2004-11-24 18:38:05

お礼

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

投稿日時 - 2004-11-25 10:05:07

ANo.4

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(4)

ANo.3

Range("A1")はあくまでも結果で判定されますから数式の結果が数値なら
"数値で~す♪"が表示されます。

文字でなく色をつける方法なら紹介されたサイトがあります。
エクセル技道場【数式が入力されているセルに色をつける】
http://www2.odn.ne.jp/excel/waza/macro.html#SEC23

投稿日時 - 2004-11-24 18:34:15

お礼

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

投稿日時 - 2004-11-25 10:04:17

ANo.2

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

If x Is Nothing Then
MsgBox "数式じゃない"
Else
MsgBox "数式"
End If

投稿日時 - 2004-11-24 18:33:46

お礼

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

投稿日時 - 2004-11-25 10:03:12

数式の条件も入れたほうがいいですよ。

+-*/()

他にもあるかなぁ。

投稿日時 - 2004-11-24 18:06:16

お礼

ありがとうございます。

投稿日時 - 2004-11-25 10:01:57

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-