TextBoxで数字を扱う 【VBA在庫管理#32】

Excel VBA 部品在庫管理アイキャッチ画像部品在庫管理

ジーク・ジオン!! どうもoReです。

今回も、TextBox数字入力の検証をしていきます。

TextBox*1 エラー

前回作成したプログラム

TextBox検証フォーム作成2

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

 

ネタではなく、ガチの話ですが…

╭( ・ㅂ・)و̑『入庫処理する時、エラーがでました⤴』

 

テキストボックス漢数字入力

 

 

三!! ちょおま…

oReびっくり

 

多分、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関数

 

なんとなくわかりますかね?

文字列の一番左から文字までの数字を数値で返す。
文字列の一番左が文字だった場合0(数値)を返す。

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

 

動作確認すると

テキストボックスIsNumeric関数

 

表現(テキストボックス1に入力した文字列)の中に、
1文字でも文字が入っているとFalseとなります。

IsNumeric関数でも不思議ちゃん対策できますな。

 

まとめ

文字・空白と数値は計算できない
Val関数 Val(string)
文字列を渡すと、数値を返す
IsNumeric関数 IsNumeric(Expression) As Boolean
表現全体が数値であればTrue、それ以外はFalse

oRe坊やだからさ

次回 テキストボックスに入力規制かけるよ

ExcelVBA部品在庫管理【目次】へ戻る

コメント

タイトルとURLをコピーしました