• ベストアンサー

ExcelVBAでデータ型を判定し、エラー値を返すプログラム

Excelのプログラムでテキストボックスに入力すると、小数点型か判定し、エラーの場合、エラー値を返すようなプログラムを作りたいのですがどのようにしたらいいでしょうか? a = エラー(CSng(TextBox1.Text)) 多分こんな感じになると思うのですが。 あとエラーが出ても特にその後の処理には影響ないので、 On Error Resume Next このように、エラーが出てもいいようにしておけばよいでしょうか? 回答よろしくお願いします。

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

  • ベストアンサー
noname#221368
noname#221368
回答No.1

 判定条件は、たんに数値化できるかどうか?、でしょうか。それなら、IsNumeric関数があります。  Dim ReturnID as Boolean  ReturnID = IsNumeric(TextBox1.Text)  'TextBox1.Textが数値化できるならTrue,そうでないならFalse  上記のReturnIDをIf文にかけてテストできます。それと「エラーが出ても特にその後の処理には影響ない」のに、何故チェックするのですか?。

miya_HN
質問者

お礼

今更ですが、お礼の記載が大変遅くなり、申し訳ありません。 ありがとうございました。

miya_HN
質問者

補足

回答ありがとうございます。 はい、数値かどうか判定するだけです。 なるほど。IsNumericを使えばいいわけですね。 ちょっと言い方が悪かったですね。正確には、影響の出ないようにするためのプログラムを作るので大丈夫という意味です。 もう一つ質問があるのですが、数値の中でも小数点第何位とか調べられる方法はありますでしょうか? すいませんがよろしくお願いします。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>数値の中でも小数点第何位とか調べられる方法はありますでしょうか 関数や、ステートメントではないと思う。 Sub test01() X = 1234.345678 MsgBox Len(X) - InStr(X, ".") End Sub でどうですか。 InStr(X, ".")の部分は丁寧にやってください。0(点が見つからない)かどうか聞いて、0で無い場合の例です。 ーー データ型について エクセルVBAには VerType関数があります。 しかし質問者の質問の視点とは異なるものです。 参考までに 0 EMPTY値、1 Null値 2 整数・・ VBとも違うような。0,1はVBには無いのでは(自信なし)。 WEBで調べてください。 VBは http://www.komonet.ne.jp/~vb/chap4.htm >CSng(TextBox1.Text エクセルで普通に使う小数点数はCSngの浮動小数点型ではないはず。 http://home.att.ne.jp/zeta/gen/excel/c04p16.htm 科学統計計算以外ではCsngを使うのではないと思うが。

miya_HN
質問者

お礼

なるほど。InStrで調べればいいんですね。 ありがとうございました。

関連するQ&A

専門家に質問してみよう