★ChangeイベントとAfterUpdateイベント
 

 さて今度は、数量を入力すると合計が自動的に計算されるというプログラムを作ってみましょう。

 品名を選択し、テキスト数量に5と入れるとテキスト合計に500と表示されればいいんですよね。

テキスト合計 = テキスト単価 * テキスト数量

これが基本的なコードの内容になるのですが、これだけではいろいろ問題も出てきます。
それを解決しながら、ちょっとずつコードを見ていきましょう。

ではまずは、どのタイミングでこのコードを動かすかということです。
テキスト内に変化が生じた瞬間なのか、テキスト内の内容が更新された後なのか?などですね。

テキストボックスのイベントには、右上のようにたくさんありますが、ChangeとAfterUpdateを今回は紹介します。

まずは普通にChange()を使ってテキスト内が変更された時にすぐ処理を行うプログラムで実験してみましょう。

Private Sub テキスト数量_Change()
  テキスト合計 = テキスト単価 * テキスト数量
End Sub
さて実行してみたらどうなりました?文字を入力した瞬間に合計も出たのではないでしょうか?
絶対に間違わずに入力ができたらいいのですが、テキスト数量を入力する時に間違ってBackSpaceなんかを使ってテキスト内の文字を消してしまうと 「型が一致しません。」 のエラーが出てきますよ。これでは使えませんよね。

それでは次に、テキスト数量の内容が更新された後にプログラムを実行するようにしてみましょう。それにはAfterUpdate()の更新後処理を使います。

Private Sub テキスト数量_AfterUpdate()
  テキスト合計 = テキスト単価 * テキスト数量
End Sub
これを実行したらどうでしょう?
テキストの文字を入力したり、変更しても更新しない限りは、合計がでなくなりましたね。
またテキスト内の文字を消しても、エラーは出なくなりましたね。

数量「5」を入力して入力文字を決定して、Enterキーを押して初めて

となります。

テキスト内に文字を入力する時には、変更時Changeを使うか、更新後処理AfterUpdateを使うかなど、その時々の状況に合わせて考えてみましょう。

[トップ][前へ][コンボボックス][次へ]