ジーク・ジオン!! どうもoReです。
今回も、TextBox数字入力の検証をしていきます。
TextBox*1 エラー
前回作成したプログラム
Private Sub CommandButton1_Click()
Range("A1") = TextBox1
Range("A2") = TextBox2 * 1
Range("A3") = TextBox3.Value
Range("A4") = TextBox4.Text
End Sub
Private Sub CommandButton2_Click()
Range("B1") = Range("A1") + TextBox1
Range("B2") = Range("A2") + TextBox2 * 1
Range("B3") = Range("A3") + TextBox3.Value
Range("B4") = Range("A4") + TextBox4.Text
End Sub
じつは、テキストボックスに文字を入力、
又は空白でコマンドボタンをポチるとエラーが出てしまいます。
エラーが出る!! 何故だ!?
シャア『坊やだからさ…』
文字・空白と数値は計算できないってことですな。
・文字はString型 ・数値はInteger型など
でね、どこにでも一人や二人、不思議ちゃんているじゃない?
この不思議ちゃん、我々凡人の斜め上を行く存在ですよね。
ガンダムで言う所の、NewType(ニュータイプ)って奴ですw
ネタではなく、ガチの話ですが…
╭( ・ㅂ・)و̑『入庫処理する時、エラーがでました⤴』
多分、9割の凡人はアラビア数字(0~9)を入力すると思うの。
だが、うちの不思議ちゃんは漢数字ぶっ込みやがったんですよw
さすが不思議ちゃんです。
╭( ・ㅂ・)و̑『ザクとは違うのだよ、ザクとは』
プログラミングにおいて、プロのグラマーな方々が一番時間を掛けるのが、
このエラー処理(不思議ちゃん対策)らしいです。
まあ、個人的・自社内で使用する物を作るぶんには、
そこまで神経質にならなくてもいいと思いますがね。
でも、一応エラー処理(不思議ちゃん対策)しておきましょう。
Val関数
・Val ヴァル
Valは、Valueの略みたいです。
Val関数の構文
Val(string)
Val関数の引数に文字列を渡すと、数値を返してくれます。
早速、使ってみましょう。
↓プログラム変更
Private Sub CommandButton1_Click()
Range("A1") = Val(TextBox1)
Range("A2") = Val(TextBox2)
Range("A3") = Val(TextBox3)
Range("A4") = Val(TextBox4)
End Sub
Private Sub CommandButton2_Click()
Range("B1") = Range("A1") + Val(TextBox1)
Range("B2") = Range("A2") + Val(TextBox2)
Range("B3") = Range("A3") + Val(TextBox3)
Range("B4") = Range("A4") + Val(TextBox4)
End Sub
動作確認すると
なんとなくわかりますかね?
Val関数を使用すると不思議ちゃん対策できますね。
IsNumeric関数
・Numeric ニュゥーメェリィク
Numericは、『数値』という意味みたいです。
IsNumeric関数の構文
IsNumeric(Expression) As Boolean
・Expression イクスプレェシャン
Expressionは、『表現』という意味みたいです。
つまり、この表現は数値ですか?みたいな感じですね。
Boolean型なので
表現全体が数値であればTrueを返し、それ以外はFalseを返します。
では、こちらも使ってみましょう。
↓プログラム変更
Private Sub CommandButton1_Click()
If IsNumeric(TextBox1) = True Then
Range("A1") = TextBox1 * 1
Else
MsgBox "数字のみ入力してね。"
TextBox1 = ""
End If
Range("A2") = Val(TextBox2)
Range("A3") = Val(TextBox3)
Range("A4") = Val(TextBox4)
End Sub
動作確認すると
表現(テキストボックス1に入力した文字列)の中に、
1文字でも文字が入っているとFalseとなります。
IsNumeric関数でも不思議ちゃん対策できますな。
まとめ
文字列を渡すと、数値を返す
表現全体が数値であればTrue、それ以外はFalse
次回 テキストボックスに入力規制かけるよ
コメント