TextBox*1について 【VBA在庫管理#31】

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

五月病おそるべし!! どうもoReです(白目)

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

TextBoxの数字をセルに入れる

#07で、このように書きました。

テキストボックスは文字通り、
テキスト(文字列)を入力するボックスです。

つまり、テキストボックスに数値を入力すると、
文字列として扱われてしまいます。

文字列だと、計算ができなくなってしまうので、
×1をすることで、数値データに変換しています。

【VBA在庫管理#07】より

 

だがしかし、

×1しなくてもいいんです。

単純に.Valueもしくは、.Textを付けてあげるのです。

 

ためしに、やってみましょう。

↓こんな感じに作成

TextBox検証フォーム作成1

 

動作として、コマンドボタン1をクリックしたら、
各セルに各テキストボックスの値を入れるよ。

Private Sub CommandButton1_Click()
    Range("A1") = TextBox1
    Range("A2") = TextBox2 * 1
    Range("A3") = TextBox3.Value
    Range("A4") = TextBox4.Text
End Sub

※エラー処理してません。
必ずテキストボックスに数字を入力してポチってね。

 

動作確認すると

TextBox検証動作確認1

セルA1のみ文字列になっています。

 

.Valueか.Textを付けると数字のみの場合は、
数値と認識してくれてるみたいです。

 

セルの値とTextBoxの値を計算する

では、コマンドボタン1で入力したセルの値と、
テキストボックスの値を計算してみましょう。

↓コマンドボタン2を追加

TextBox検証フォーム作成2

 

動作として、コマンドボタン2をクリックしたら、
A列の各値と各テキストボックスの値を足し算してB列に入れるよ。

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

※エラー処理してません。
必ずテキストボックスに数字を入力してポチってね。

 

動作確認すると

TextBox検証動作確認2

セルB1の値が『11』となります。

 

と言うことは、『+』は『&』と同じ処理をしているっぽいよね。

しかも、数値になっています。

 

じゃー、メッセージボックスで確認してみる。

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
    MsgBox "1" + "1"
End Sub

 

MsgBox検証1

うん、OK!!

 

そしたら、メッセージボックスの足し算のどちらか片方を数値にしてみる。

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
    MsgBox "1" + 1
End Sub

 

MsgBox検証2

ちゃんと計算しますな!!

 

と言うことは、

数字(文字列)数字(文字列)を足し算すると&処理する。
数字(文字列)数字(文字列)を足し算すると合体した数値になる。
数字(文字列)数値を足し算すると+処理する。

ってことですな。

 

ちなみに、数字(文字列)と数字(文字列)を『-』『*』『/』しても計算しますね。

『+』の時だけ、何か見えない力が働いている様ですw

 

TextBox1*1

ではでは、テキストボックス1に.Valueか.Textを付けて
動作確認してみましょう。

Private Sub CommandButton2_Click()
    Range("B1") = Range("A1") + TextBox1.Value
    Range("B2") = Range("A2") + TextBox2 * 1
    Range("B3") = Range("A3") + TextBox3.Value
    Range("B4") = Range("A4") + TextBox4.Text
End Sub

 

 

TextBox検証動作確認2

 

(# ゚Д゚)『VBA、てえ~めぇぇぇ⤴』

 

失礼!! 餅つけoRe!!

初めのほうで×1しなくても.Valueか.Textを付ければいいと言いましたが、
それはセルへ入力する場合みたいですね。

 

プログラム上でテキストボックスの数字を使用する場合は、
あくまでもテキスト(文字列)あつかいみたいです。

 

では、テキストボックス1に×1、
テキストボックス2の×1を消して動作確認してみてください。

Private Sub CommandButton2_Click()
    Range("B1") = Range("A1") + TextBox1 * 1
    Range("B2") = Range("A2") + TextBox2  '← * 1を消す
    Range("B3") = Range("A3") + TextBox3.Value
    Range("B4") = Range("A4") + TextBox4.Text
End Sub

 

ちゃんと計算されてますか?

oReのぞき見

もちろん、×1ではなく+0でも数値に変換できます。

ためしてみてね。

まとめ

セルに数値として入力する場合.Valueか.Textを付けてもOK!!
数字(文字列)と数字(文字列)を足し算すると&処理
数字(文字列)と数字(文字列)を足し算すると合体した数値
数字(文字列)と数値を足し算すると+処理

oReやる気なし

次回 もうちょい、TextBoxを掘るよ

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

コメント

  1. コロまぐ より:

    最新投稿日であった4月から毎日ちょこちょこ見てましたが、そろそろ失踪したんではないかと思いました。お元気でよかったです。

    4月にVBAが必要になって、実際に作るシステムが在庫管理に似ていたので何か学習用になるサイトがないかなあと探していたらここにたどり着きました。プログラムの知識は少しだけあったので、とても分かりやすくネット用語などの冗談で、面白い記事だと思いました。

    これからもご教授よろしくお願いします!!

    • oReoRe より:

      コロまぐ様
      はじめまして。
      コメントありがとうございます。

      >失踪

      全人類のため、某ウイルスをVBAでどうにか出来ないか?と疾走しておりました。(大嘘)

      まだまだ予断を許さない状況、くれぐれもご自愛ください。

  2. にしぼうず より:

    いつもありがとうございます。最近このサイトを知りまだ途中です。

    とても分かりやすく、面白く説明されていて見ていて楽しいですね。
    #31の追加、よくわからなかったところについて分かりやすく説明していただいています。
    VBAは意外と敷居が高く難しく考えてしまいがちな私ですが、いとも易しく説明されるoRe様
    の姿勢に尊敬と感謝の念を抱いている次第です。

    是非とも某ウイルスを撃退していただきたく存じます。次の更新をお待ちしています。

    • oReoRe より:

      にしぼうず様
      コメントありがとうございます。

      >よくわからなかったところについて分かりやすく説明していただいています。

      *1について、他の方々にも参考になっていれば良いのですが…
      良い質問をありがとうございました。

      某ウイルスの件は、プロのグラマーな方々にお任せしましょうw
      私なんぞが出しゃばっても、ねぇ…

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